2017-08-03
集合跟数组差不多,一个操作基本数据类型,一个操作引用数据类型,增删改查。
Collection是个老祖宗,管着两个儿子,List 和 Set,他们都是接口。重点掌握ArrayList和HashSet两个实现类
ArrayList的基本方法,迭代器为接口,实现方式是一个内部类,通过对外提供的iterator()方法获得。接口类型的引用变量接收,体现java的多态。ListIterator比Iterator功能更加强大,因为它包含了指针,可以在遍历时增删改查。
import java.util.*;
class CollectionDemo {
public void method () {
ArrayList a1 = new ArrayList();
a1.add("cao");
a1.add("min");
a1.add("handsome!");
ArrayList a2 = new ArrayList();
a2.add("cao");
a2.add("zhi");
a2.add("handsome!");
System.out.println("a1数量" + a1.size());
System.out.println("a2数量" + a2.size());
System.out.println("a1内容" + a1);
System.out.println("a2内容" + a2);
Iterator i1 = a1.iterator();
System.out.println(i1.getClass().getName()); // 返回为java.util.ArrayList$Itr
System.out.println("a".getClass().getName()); // 返回为 java.lang.String
while(i1.hasNext()) {
System.out.println(i1.next());
}
Iterator i2 = a2.iterator();
while(i2.hasNext()) {
System.out.println(i2.next());
}
a1.remove("cao");
System.out.println("a1内容" + a1);
System.out.println("a1是否含有min" + a1.contains("min"));
System.out.println("a2是否为空" + a2.isEmpty());
System.out.println(a1.removeAll(a2));
System.out.println("a1内容" + a1);
System.out.println(a1.retainAll(a2));
System.out.println("a1内容" + a1);
}
public static void main(String[] args) {
ArrayList a1 = new ArrayList();
a1.add("cao");
a1.add("min");
a1.add("handsome!");
ListIterator lt = a1.listIterator();
System.out.println(lt.getClass().getName()); // 返回为java.util.ArrayList$ListItr
System.out.println(a1.indexOf("min"));
System.out.println(a1.subList(1,3));
System.out.println(a1.get(2));
System.out.println(a1);
while(lt.hasNext()) {
Object obj = lt.next();
if (obj.equals("handsome!")) {
lt.set("ooo"); //set()方法要跟在next()方法之后,不然会报错IllegalStateException
lt.add(" hahaha"); //查文档,remove() 和 set(Object) 不是根据光标位置定义
} //而是根据对调用next()和previous()返回的最后一个元素的操作定义的
}
System.out.println(a1);
}
}