集合类

java.util包下

(虚线为接口,实线为实现类)


目录

单列集合跟接口Collection

双列集合跟接口Map  键唯一


单列集合跟接口Collection

    List  有序(即:存入顺序和取出顺序一致)、可重

         ArrayList实现  看做长度可变的数组

         LinkedList实现  双向循环链表

    Set  无序、无重

        HashSet实现  根据对象的哈希值来存储对象在集合中的存储位置

                当调用add()存入元素时,首先自动调用当前存入对象的hashCode()获得对象的哈希值,计算存储位置,若该位置上有元素则会调用equals()比较,若返回false则存入,返回true则舍弃。

                所以需要重写hashCode()、equals()。若要比较的是String类型,String类已经重写了两个方法。若要比较的是Student 对象,则可在Student类中重写:

               

        TreeSet实现  AVL(是一棵二叉排序树,所以是排序的)

                每次向TreeSet集合中存入一个元素时,就会将该元素与其他元素比较,比较时,都会调用compareTo(),该方法是 Comparable接口中定义的,所以必须实现Comparable:

               

                还可以使用自定义比较器:

               

 

Iterator接口  遍历Collection

        ArrayList list = new ArrayList();
        ...
        Iterator it = list.iterator();
        while(it.hasNext()) {
            Object obj = it.next();
        }

 

jdk5新特性  foreach语法  比iterator简洁  只能访问,不能修改

        ArrayList list = new ArrayList();
        ...
        for (Object obj : list) {
            System.out.println(obj);
        }

 

ListiIterator接口  ListiIterator是Iterator的子类

        ArrayList list = new ArrayList();
        ...
        ListiIteratorit = list.listiIterator(list.size());  //list.size()用于起始位置
        while(it.hasPrevious()) {  //逆向迭代
            Object obj = it.Previous();
        }

 

Enumeration接口

                     

 

双列集合跟接口Map  键唯一

        HashMap实现

               HashMap和LinkedHashMap的区别:
                     HashMap
                     根据键的HashCode 值存储数据。使用链地址法解决冲突,也就是数组+链表的方式,所以HashMap由数组+链表组成的。(具体实现:https://blog.csdn.net/chushoufengli/article/details/88089201
                     不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用 Collections的synchronizedMap方法使HashMap具有同步的能力。
                     LinkedHashMap
                     是HashMap的子类,其内部维持了一个双向链表,可以保持顺序。

               第一种遍历方式  先遍历键,再根据键获取相应的值

                     

               第二种遍历方式  先获取集合中所有的映射关系,再从映射中取出键和值

                   

               第三种遍历方式

                   

               以上无序的,LinkedHashMap提供一种有序的:

                   

        TreeMap实现

               理解为TreeMap的所有键为TreeSet。

                    

               自定义比较器:

                            、

        HashTable实现类的子类Properties

                    

 

java.util包下的,操作集合的工具类——Collections,操作数组的工具类——Arrays,见API

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值