标签:lint ati cli 地址 失败 方案 依次 需要 retain
Student[] arr = new Student[5];                 //存储学生对象
arr[0] = new Student("张三", 23);
arr[1] = new Student("李四", 24);
arr[2] = new Student("王五", 25);
arr[3] = new Student("赵六", 26);
arr[4] = new Student("马哥", 20);
for (int i = 0; i < arr.length; i++) {
    System.out.println(arr[i]);
}
B:画图演示
基本功能演示
boolean add(E e)
boolean remove(Object o)
void clear()
boolean contains(Object o)
boolean isEmpty()
int size()
B:注意:
collectionXxx.java使用了未经检查或不安全的操作.
注意:要了解详细信息,请使用 -Xlint:unchecked重新编译.
java编译器认为该程序存在安全隐患
温馨提示:这不是编译失败,所以先不用理会,等学了泛型你就知道了
B:案例演示
toArray() *
Collection coll = new ArrayList();
coll.add(new Student("张三",23));     //Object obj = new Student("张三",23);
coll.add(new Student("李四",24));
coll.add(new Student("王五",25));
coll.add(new Student("赵六",26));
Object[] arr = coll.toArray();              //将集合转换成数组
for (int i = 0; i < arr.length; i++) {
    Student s = (Student)arr[i];            //强转成Student
    System.out.println(s.getName() + "," + s.getAge());
}
带All的功能演示
boolean addAll(Collection c)
boolean removeAll(Collection c)
boolean containsAll(Collection c)
boolean retainAll(Collection c)
B:案例演示
迭代器的使用
Collection c = new ArrayList();
c.add("a");
c.add("b");
c.add("c");
c.add("d");
Iterator it = c.iterator();                     //获取迭代器的引用
while(it.hasNext()) {                           //集合中的迭代方法(遍历)
    System.out.println(it.next());
}
A:案例演示
Collection c = new ArrayList();
c.add(new Student("张三",23));
c.add(new Student("李四",24));
c.add(new Student("王五",25));
c.add(new Student("赵六",26));
c.add(new Student("赵六",26));
for(Iterator it = c.iterator();it.hasNext();) {
    Student s = (Student)it.next();                     //向下转型
    System.out.println(s.getName() + "," + s.getAge()); //获取对象中的姓名和年龄
}
System.out.println("------------------------------");
Iterator it = c.iterator();                             //获取迭代器
while(it.hasNext()) {                                   //判断集合中是否有元素
    //System.out.println(((Student)(it.next())).getName() + "," + ((Student)(it.next())).getAge());
    Student s = (Student)it.next();                     //向下转型
    System.out.println(s.getName() + "," + s.getAge()); //获取对象中的姓名和年龄
}
A:案例演示
通过size()和get()方法结合使用遍历。
List list = new ArrayList();
list.add(new Student("张三", 18));
list.add(new Student("李四", 18));
list.add(new Student("王五", 18));
list.add(new Student("赵六", 18));
for(int i = 0; i < list.size(); i++) {
    Student s = (Student)list.get(i);
    System.out.println(s.getName() + "," + s.getAge());
}
A:案例演示
需求:我有一个集合,请问,我想判断里面有没有"world"这个元素,如果有,我就添加一个"javaee"元素,请写代码实现。
List list = new ArrayList();
list.add("a");
list.add("b");
list.add("world");
list.add("d");
list.add("e");
/*Iterator it = list.iterator();
while(it.hasNext()) {
    String str = (String)it.next();
    if(str.equals("world")) {
        list.add("javaee");         //这里会抛出ConcurrentModificationException并发修改异常
    }
}*/
B:ConcurrentModificationException出现
C:解决方案
b:集合遍历元素,集合修改元素
ListIterator lit = list.listIterator();     //如果想在遍历的过程中添加元素,可以用ListIterator中的add方法
while(lit.hasNext()) {
    String str = (String)lit.next();
    if(str.equals("world")) {
        lit.add("javaee");  
        //list.add("javaee");
    }
}
C:案例演示
Vector的迭代
Vector v = new Vector();                //创建集合对象,List的子类
v.addElement("a");
v.addElement("b");
v.addElement("c");
v.addElement("d");
//Vector迭代
Enumeration en = v.elements();          //获取枚举
while(en.hasMoreElements()) {           //判断集合中是否有元素
    System.out.println(en.nextElement());//获取集合中的元素
}
ArrayList:
    底层数据结构是数组,查询快,增删慢。
    线程不安全,效率高。
Vector:
    底层数据结构是数组,查询快,增删慢。
    线程安全,效率低。
Vector相对ArrayList查询慢(线程安全的)
Vector相对LinkedList增删慢(数组结构)
LinkedList:
    底层数据结构是链表,查询慢,增删快。
    线程不安全,效率高。
Vector和ArrayList的区别
    Vector是线程安全的,效率低
    ArrayList是线程不安全的,效率高
共同点:都是数组实现的
ArrayList和LinkedList的区别
    ArrayList底层是数组结果,查询和修改快
    LinkedList底层是链表结构的,增和删比较快,查询和修改比较慢
共同点:都是线程不安全的
标签:lint ati cli 地址 失败 方案 依次 需要 retain
原文地址:http://www.cnblogs.com/GJ-ios/p/5998972.html