黑马程序员技术交流社区

标题: 集合框架之Collection接口 [打印本页]

作者: 695010894    时间: 2016-4-4 14:43
标题: 集合框架之Collection接口
import java.until.*;


class  CollectionDemo
{
        public static void main(String[] args)
        {
                //创建一个集合容器,使用Collection接口的子类.ArrarList
                ArryList al = new ArrayList();

                //添加元素
                al.add("java01");
                al.add("java02");
                al.add("java03");
                al.add("java04");
               
                //删除元素
                al.remove();
                al.clear();        清空集合

                //获取元素个数,集合长度
                al.size();
               
                //判断元素
                al.contains();

                //是否为空
                al.isEmpty();

                //取交集
                al1.rentainAll(al2); //al1中只会保留相同元素.
                al1.removeAll(al2); //al1中只会保留不同的元素
               
                //取出元素
                把这种取出方式定义在集合内部,这样的取出方式可以直接访问集合内元素,定义成内部类.
                而每一个容器的数据结构不同,动作细节也不一样,但是都有共性内容:判断和取出;
                则可以对外提供一个接口: iterator();
               
                Iterator it = al.iterator();
                while(it.hasNext())        //获取迭代器,取出集合中的元素--迭代是用于集合取出元素的方式
                {
                        it.next();
                }

                for (Iterator it =al.iterator; it.hasNext(); )//it局部变量  程序结束就释放
                {
                        it.next();
                }
        }
        public static void sop(Object obj)        // add方法的参数类型都是Object,便于接收任意类型对象,即多态.
        {
                System.out.println(obj);
        }
       
}

collection
                |--List:元素是有序的,元素可以重复
                        |--ArrayList:低层的数据结构使用的是数组结构.特点:查询速度快,但是增删缓慢.线程不同步
                        |--LinkedList:低层使用的是链表数据结构.特点:增删速度很快,查询稍慢.
                        |--Vector:低层是数组数据结构.线程同步,被ArrayList替代
                |---Set: 元素是无序的,元素不可以重复.
List特有方法:凡是可以操作角标的方法都是该体系特有的方法.
List集合特有的迭代器. ListIterator 是Iterator的子接口,在迭代时,
不可以通过集合对象的方法操作集合中的元素,因为会发生ConcurrentModificationException异常

所以,在迭代时,只能用迭代器的方法操作元素,可是Iterator方法是有限的,只能进行判断,取出,删除的操作,
如果想要其他操作,如添加修改,就需要使用其子接口:ListIterator

该接口只能通过List集合的ListIterator方法获取.--掌握
增:
        add(index,element);
        addAll(index,collection);
删:
        remove(index);
改:
        set(index,element);
查:
        get(index);
        subList(start,end);
        listIterator();
               
在指定位置添加元素
        a1.add(1,"java");
删除指定位置的元素
        a1.remove(2);
修改元素
        a1.set(3,"java2");
通过角标获取元素
        a1.get(3);


枚举:是Vector特有的取出方式,和迭代器一样.
因为枚举的名称以及方法名称都过长,所以被迭代器取代了.

LinkedList 特有方法:
addFirst();
addLast();

getFirst();
getLast();
获取元素,但不删除元素.如果集合中没有元素,会出现NoSuchElementException
removeFirst();
removeLast();
获取元素,删除元素.如果集合中没有元素,会出现NoSuchElementException

offerFirst();
offerLast();

peekFirst();
peekLast();

pollFirst();
pollLast();
如果集合中没有元素,返回null.




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2