• 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.

     

    每天进步一点点 个人意见,仅供参考
  • 相关阅读:
    JAVA调用WebService总结
    关于购物车的想法
    ASP.NET中初试Ajax
    转帖:从FxCop归纳出来的一些规范建议
    数据结构(二叉树)C#描述
    FormView控件和DetailsGridView控件实现MasterSlave
    在.NET中使用MySql数据库
    Oracle学习总结1
    Oracle学习总结2
    关于字符匹配所引起的的问题
  • 原文地址:https://www.cnblogs.com/mason117/p/11188505.html
Copyright © 2020-2023  润新知