容器(Collection) List接口 Set接口
List接口 ,Set接口
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import com.hanqi.model.Book;
public class Main {
public static void main(String[] args) {
MyArrayList list = new MyArrayList(); //List接口的底层原理
Book b = new Book("格林童话2");
list.add(new Book("格林童话1"));
list.add(b);
list.add(new Book("格林童话3"));
list.add(new Book("格林童话4"));
list.add(new Book("格林童话5"));
list.add(new Book("格林童话6"));
System.out.println(list.size());
System.out.println(list.get(2));
System.out.println(list.remove(b));
System.out.println(list.remove(new Book("格林童话5"))); //如果要剔除掉,你new了一个新的,
//c.remove方法: 通过判断两个对象是否互相的equals来确定是不是该删除该对象,
//自定义的类, 需要自己重写父类的equals方法
//重写equals方法, 也应该重写hashCode方法
System.out.println(list.size());
//集合是一种容器
Collection c1 = new ArrayList(); //Arraylist 是Collection的实现关系
Collection c2 = new ArrayList();
c1.add("aaa");
c1.add("bbb");
c1.add("ccc");
c2.add("aaa");
c2.add("bbb");
c2.add("ddd");
System.out.println(c1.retainAll(c2));//返回一个boolean值,
//当list的内容被改变的时候返回true, 否则返回false
//总结:像上面的情况,就是说先取出c1与c2的交集取出来给c1,现在的c1与之前的c1进行比较,如果内容改变就返回ture
List list1 = new ArrayList(); //父类引用指向子类,List里的方法可以使用,ArrayList初始容量为10
list1.add(100);
list1.add("bbb");
list1.add(new Book("黑猫警长"));
list1.add(new String("ddd"));
System.out.println(list1.get(2)); //获取的索引值为2的内容ccc
Object obj = list1.set(2, "frsgrdfsghdrtfhjdtg"); //有一个返回值,需要再get一下
System.out.println(obj); //返回的是"ccc";
System.out.println(list1.get(2)); //得到是"新设置的内容"
list1.remove(100);
list1.remove(new String("bbb"));
list1.remove(new Book("黑猫警长"));
list1.remove("ddd");
System.out.println(list1.size()); //输出长度变为几
int i = list1.indexOf(100); //这个值第一次出现的索引值
System.out.println(i);
int i2 = list1.lastIndexOf("ddd"); //这个值最后一次出现的索引值
System.out.println(i2);
/* List接口 get
set(有一个返回值要注意 !)
add
remove(int) //传的是索引值
remove(Object)
indexOf
lastIndexOf*/
泛型
List <String> list = new ArrayList <String>(); //规定是字符串型的就是输入的是字符串,而且
//是引用类型
list.add("aa");//c.add(参数类型必须是Object)
list.get(0);
/*目的是为了免去强转Object的麻烦
1, 装入集合的类型都被当作Object对待, 从而失去了自己的实际类型
2, 集合中取出来的时候需要转型, 效率低, 易出错*/
}
}
遍历

输出 aaa,bbb,ccc,ddd, 唯一不好之处在于无法取出索引值 ,for循环遍历, 1.5以后才出现的for(Objetc o : array) {}
有优点有缺点,for each
浙公网安备 33010602011771号