Collection和Map知识梳理

  1. Collection是一个接口,只能存储引用类型,并且是单个存储。所有的集合都是可以迭代的。
  2. 集合的常用3种遍历方式:
                ArrayList<String> list = new ArrayList<>();
        list.add("stay");
        list.add("with");
        list.add("me");

        System.out.println("使用迭代器遍历集合");
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }

        System.out.println("***********************");
        System.out.println("使用for循环遍历集合");
        int size = list.size();
        for (int i = 0; i < size; i++) {
            System.out.println(list.get(i));
        }

        System.out.println("***********************");
        System.out.println("使用foreach循环遍历集合");
        for (String str : list) {
            System.out.println(str);
        }

 

参考前辈的博客:https://blog.csdn.net/dengnanhua/article/details/64692191

记住如下总结:

(1)对于ArrayList和LinkedList,在size小于1000时,每种方式的差距都在几ms之间,差别不大,选择哪个方式都可以。

(2)对于ArrayList,无论size是多大,差距都不大,选择哪个方式都可以。

(3)对于LinkedList,当size较大时,建议使用迭代器或for-each的方式进行遍历,否则效率会有较明显的差距。

所以,综合来看,建议使用for-each,代码简洁,性能也不差。

  另外,当效率不是重点时,应该在设计上花更多心思了。实际上,把大量对象放到List里面去,本身就应该是要考虑的问题。

  2.List和Set继承自Collection接口

List接口:有序,存储进去什么顺序,取出就是什么顺序。元素可重复。

Set接口:无序,不可重复。

3.List体系接口

List下可分为3种集合类。ArrayList、LinkedList、Vector(工作中基本不用)---------这3个集合都是类

ArrayList:底层采用数组存储元素,适合查询,不适合频繁的随机增删元素。

LinkedList:底层采用双向链表数据结构存储数据;适合频繁的增删,不适合查询操作。

Vector:底层采用数组存储元素,但是线程安全的,效率较低,工作很少使用。

Set下可分为2种集合类。HashSet(哈希表/散列表)、SortedSet(接口)。

SortedSet是一个接口,TreeSet是它的实现类。特点:集合中元素不可重复;但是可以按照元素的大小进行排序(默认为从小到大排序)。

 

4.Map体系接口

Map<key,value> (接口): Map集合以键值对的方式存储元素,特点:无序不可键重复。(Map和Collection没有关系)

Map下有HashMap、Hashtable、SortedMap(接口)。

HashMap最为常用,常见HashMap遍历的3种方式;

        HashMap<String, String> map = new HashMap<>();
        map.put("a", "1");
        map.put("b", "2");
        map.put("c", "3");
        System.out.println("******使用entrySet方式获取key,value******");
        Set<Map.Entry<String, String>> entries = map.entrySet();
        for (Map.Entry<String, String> entry : entries) {
            System.out.println(entry.getKey());
            System.out.println(entry.getValue());
        }
        System.out.println("******使用keySet方式获取key,再获取value******");
        Set<String> keySet = map.keySet();
        for (String key : keySet) {
            System.out.println(key);
            System.out.println(map.get(key));
        }
        System.out.println("******使用map.values()方式获取value******");
        Collection<String> values = map.values();
        for (String value:values) {
            System.out.println(value);
        }

Hashtable:线程安全,效率低        Properties集合继承Hashtable集合类:Properties集合特点:属性类,key/value形式存储元素,但是key/value只能是字符串。

SortedMap:一个接口,TreeMap实现SortedMap。特点:SortedMap中的key无序不可重复,但是key可以按照元素的大小顺序自动排序。SortedMap的key集合等同于SortedSet.

 

每天进步一点点 个人意见,仅供参考
原文地址:https://www.cnblogs.com/mason117/p/11188505.html