栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

集合的分类和常用方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

集合的分类和常用方法

一、集合的分类 (1)Collection接口(单值) 实现了Iterator

        所包含的方法:

                add(element)、add(index,element)、get(index)、indexOf(obj)、lastIndexOf(obj)
                remove(index)、remove(obj)、set(index,element)

1.List接口(元素有序 方法可以与索引值有关、可重复)

ArrayList:

 ArrayList底层其实是个Object数组,当使用无参构造创建ArrayList集合对象的时候;在进行第一次add的时候,会对内部的数组进行扩容,这个新数组的长度默认是10;以后再次扩容的时候 新数组的大小都是旧数组的1.5倍,频繁查找的时候使用。

LinkedList:

底层使用双向链表,因为是链表不存在初始容量,每次添加的时候new一个Node节点元素放在链表的尾部。LinkedList有两个指针,一个指向第一个元素,一个指向最后一个元素,当频繁插入和删除的时候可以使用。        

Vectot:    

底层是Object数组,ArrayList的线程安全版,与ArrayList区别有扩容时新数组大小是旧数组的2倍和线程是安全的。

2.Set接口 (元素无序、不可重复)

HashSet(元素无序):

底层哈希表(数组+单向链表+红黑树)实现,使用的是HashMap的源码,将HashSet的值当做key存储到HashMap中,实现元素的不可重复。初始容量为16,加载因子0.75。

LinkedHashSet(元素按插入顺序排序):

底层哈希表(数组+单向链表+红黑树)的基础上在元素之间使用双向链表进行排序,保证元素按照插入顺序来进行排序,使用的是LinkedHashMap的源码。
TreeSet(默认自然排序):

底层是红黑树来进行实现,使用的是HashSet的源码,存储的元素需要实现comparable接口,或者在new TreeSet()的时候在构造器中添加Comparator比较器。存入的一定是同类型的元素,方便是使用对象的某个属性来进行排序。

(2)Map接口(键值对)  未实现Iterator

        所包含的方法:
                put(key,value)、get(key)、keySet()、values()、remove(key,value)、replace(key,value)

HashMap:

底层用一张哈希表(数组,单向链表,红黑树 (JDK8引入))来进行实现,内部使用了Hash算法。为了HashMap的正常使用,key一般是不可变对象,至少该对象中用于计算哈希值的属性要不可变,方可保证HashMap的正常使用。
LinkedHashMap:

底层由哈希表(数组+单向链表+红黑树+双向链表)实现,HashMap的子类,在HashMap的基础上由单向链表变成了双向链表,维护元素的添加顺序。

TreeMap:

底层使用红黑树进行存储,对key对象进行排序来确定在红黑树中的位置,key需要实现comparable接口,或者在new TreeMap()的时候在构造器中添加Comparator比较器。代码如下:

TreeMap treeMap = new TreeMap<>(new Comparator() {
            @Override
            public int compare(Dog o1, Dog o2) {
                return o1.age - o2.age;
            }
        });

HashTable:

Hashtable底层也是哈希表(数组+单向链表,JDK8中未引入红黑树)实现的 是线程安全的 但是性能比较低,如果是高并发多线程项目推荐使用 ConcurrentHashMap;HashMap是线程不安全的;

二、与集合有关的类 (1)Iterator

        hasNext():判断是否有下一个元素,返回boolean

        next():获取当前游标指向的对象

        remove():删除当前游标指向的对象

(2)Comparable

        TreeSet和TreeMap中需要使用的到,作为主键需要进行排序确定在红黑树中的位置,key的类需要实现Comparable接口,并且重写CompareTo()方法来确定比较的方法。

三、Collection和Map的遍历方式 (1)Collection的遍历方式

1.for

ArrayList list = new ArrayList();
       for (Dog a:list){
           System.out.println(a);
       }


2.forEach

ArrayList list = new ArrayList();
       list.forEach(a->{
           System.out.println(a);
       });


3.Iterator

ArrayList list = new ArrayList();
        Iterator iterator = list.iterator();
        while (iterator.hasNext()) {
            Dog dog = iterator.next();
            System.out.println(dog);
        }
(2)Map的遍历方式

1.for

2.forEach

3.map.entrySet()

Map map = new HashMap<>();
        for (Map.Entry a: map.entrySet()){
            System.out.println(a.getKey() + a.getValue());
        }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/848259.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号