集合

当数据多了需要存储,需要容器,而数据的个数不确定,无法使用数组,这时可以使用Java中另一个容器--集合。


集合和数组的区别?
数组的长度是固定的。
集合的长度是可变的。

数组中存储的是同一类型的元素,可以存储基本数据类型值。
集合存储的都是对象。而且对象的类型可以不一致。


什么时候使用集合呢?
当对象多的时候,先进行存储。

JDK最早的1.0版本中。提供的集合容器很少。
到了1.2版,为了更多的需求,出现了集合框架。有了更多的容器。
完成不同的需求。
这些容器怎么区分?区分的方式:每一个容器的数据结构不一样。
数据存储到的一种方式。

 

* 细节。
         * 1,集合中存储其实都是对象的地址。
         * 2,集合中可以存储基本数值吗?不行,但是jdk1.5以后可以这么写,但是存储的还是对象(基本数据类型包装类对象)。

coll.add(3);//coll.add(Integer.valueOf(3));//自动装箱。
         * 3,存储时提升了Object。取出时要使用元素的特有内容,必须向下转型。

 

 

 

Collection:
        |--List:有序的,带索引的,通过索引就可以精确的操作集合中的元素,元素是可以重复的。
                List提供了增删改查动作   
                增加add(element) add(index,element)  ;
                删除remove(element) remove(index);
                修改set(index,element);
                查询get(index);
            |--Vector:可以增长的数组结构。同步的。效率非常低。已被ArrayList替代。
            |--ArrayList:是数组结构,长度是可变的(原理是创建新数组+复制数组),查询速度很快,增删较慢,不同步的。
            |--LinkedList:是链表结构,不同步的,增删速度很快,查询速度较慢。
                    可用于实现堆栈,队列。
                    堆栈:先进后出  First in Last Out  FILO 手枪弹夹。
                    队列:先进先出  First in First Out FIFO 排队买票。
            List可以存储重复元素的,如果需求中要求容器中的元素必须保证唯一性。
            
        |--Set:不包含重复元素的集合,不保证顺序。而且方法和Collection一致。Set集合取出元素的方式只有一种:迭代器。
            |--HashSet:哈希表结构,不同步,保证元素唯一性的方式依赖于:hashCode(),equals()方法。查询速度快。
            |--TreeSet:可以对Set集合中的元素进行排序。使用的是二叉树结构。如何保证元素唯一性的呢?
                        使用的对象比较方法的结果是否为0,是0,视为相同元素不存。
                        元素的排序比较有两种方式:
                        1,元素自身具备自然排序,其实就是实现了Comparable接口重写了compareTo方法。
                        如果元素自身不具备自然排序,或者具备的自然排序不是所需要的,这时只能用第二种方式。
                        2,比较器排序,其实就是在创建TreeSet集合时,在构造函数中指定具体的比较方式。
                            需要定义一个类实现Comparator接口,重写compare方法。
            到此为止:再往集合中存储对象时,通常该对象都需要覆盖hashCode,equals,
            同时实现Comparale接口,建立对象的自然排序。通常还有一个方法也会复写toString();
            
    看集合对象的小技巧:★★★★★★
    集合分体系。List  Set
    子类对象的后缀名是所属体系,前缀名是数据结构名称。
    List:新出的子类都是以List结尾的,通常都是非同步的。
        |--ArrayList :看到array,就知道数组,查询速度快。
        |--LinkedList:看到link,就知道链表,增删速度快。
        
    Set:
        |--HashSet:看到hash,就知道哈希表,查询速度更快,并想到元素唯一,通过hashCode(),equals方法保证唯一性。
        |--TreeSet:看到tree,就知道二叉树,可以排序,排序想到Comparable-compareTo Comparator--compare方法。 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值