您的位置:首页 > 职场人生

黑马程序员一一Collection集合框架和List集合笔记

2015-08-15 15:47 676 查看

黑马程序员一一Collection集合框架和List集合

———–android培训java培训、期待与您交流!————

1.什么是集合?

能够存储多个同类型的基本数据类型的容器我们叫数组,那么可以存储多个同类型对象的容器我们就称之为集合!

[code]什么是Collection集合框架,通过下面这个图来说明!





Collection是一个根接口,而它旗下又很多个子接口继承了它,其中两个最重要的子接口分别的是List和Set,它们继承了Collection接口之后,自己又有自己的新特性,List接口下有3个子类实现了它,Set接口下有2个子类实现了它。它们之间的这种层级关系就形成了一个框架,我们就叫它Collection集合框架!

[code]    为什么会出现这么多种集合呢?
    因为每一个容器对数据的存储方式都不同。这个存储方式我们称之为数据结构!


2.List集合和Set集合

List和Set都是继承了Collection接口

不同的话就是实现了List集合的类它存储的元素都是有序的,而且有索 引,可以出现重复的元素,而Set集合的元素是无序的,没有索引,不能出现重复元素。

2-1.List集合的子类:

List有3个比较重要的子类,分别是ArrayList,LinkedList,Vector。

ArrayList和Vector差不多,它们最大的区别就在ArrayList是不同步的,Vector是同步的,ArrayList的效率比较高,所以我们一般都ArrayList。

ArrayList的特点:它的底层是数组的结构,所以它和数组一样,每一个元素都有索引,而且它是有序的,集合在可以存在重复的元素。因为底层是数组结构的,所以它的查询元素速度快,但是增删元素的速度就相对较慢。

[code]//通过一段代码来看看ArrayList的创建和一些基本操作
class demo01 
{
    public static void main(String[] args) 
    {
        ArrayList arr = new ArrayList();//创建对象
        ArrayList arr1 = new ArrayList();
        arr.add("java1");//添加元素
        arr.add("java2");
        arr.add("java3");
        arr.add("java4");

        arr1.add("java1");//添加元素
        arr1.add("java2");
        arr1.add("java6");
        arr1.add("java5");
        Iterator it = arr.iterator();//获取一个迭代器 用于取元素
        while(it.hasNext()) //判断容器是否为空 返回boolean
        {
            sop(it.next());//返回下一个元素
        }
        /*
        //另一种写法 能减少内存的使用
        for (Iterator it = arr.iterator(); it.hasNext(); )
        {
            sop(it.next());
        }*/
            sop(arr);//原来的元素
        cc.p(arr.containsAll(arr1));//是否包含arr这个集合   

        cc.p(arr.size());//集合的长度

        arr.removeAll(arr1);//去除了和arr1相同的部分
             sop(arr);

        arr.retainAll(arr1);//只保留和arr1相同的部分
            sop(arr);

    }
    //一个打印的小方法
    public static void sop(Object obj)
    {
        System.out.println(obj);
    }
}


LinkedList的特点:它的底层是链表的结构,所以它和链表一样,每一个元素都有索引,而且它是有序的,集合在可以存在重复的元素。因为底层是链表结构的,所以它的查询元素速度较慢,但是增删元素的速度非常快。

[code]//通过一段代码来看看LinkedList创建和的方法
class myList//操作和创建LinkedList集合的类
{
    private LinkedList  link;
    myList()
    {
        link = new LinkedList();//构造函数创建LinkedList类
    }
    public void myAdd(Object obj)  ;//写入元素
    {
        link.addLast(obj);
    }
    public boolean myEmpty()    ;//判断容器里是否为空
    {
        return link.isEmpty();
    }
    public Object myRemove()   ;//取出容器里的元素 从最后一个开始取
    {
        return link.pollLast();
    }
}
class demo03 
{
    public static void main(String[] args) 
    {
         myList link = new myList();//创建一个LinkedList对象
         link.myAdd("java1");//往里面添加元素
         link.myAdd("java2");
         link.myAdd("java3");
         link.myAdd("java4");
    while(!link.myEmpty())//删除所有元素
        {
             System.out.println(link.myRemove());
        }
    }
}


[code]总结:
ArrayList和LinkedList都可以存储有序的带有索引的元素,如果是查找动作比较多的话,可以使用ArrayList!如果是经常要对集合里的元素进行操作的话那用LinkedList会比较好!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: