zoukankan      html  css  js  c++  java
  • Java知识点梳理——集合

    https://www.cnblogs.com/lbxx/p/9390489.html

    1、定义:Java集合类存放于java.util包,是存放对象的容器,长度可变,只能存放对象,可以存放不同的数据类型;

    2、常用集合接口:

      a、Collection接口:最基本的集合接口,存储不唯一,无序的对象,List接口和Set接口的父接口;

      b、List接口:一个有序、可以重复的集合,常用实现类ArrayList和LinkedList;

    1 // 底层数据结构是数组,查询快,增删慢,线程不安全,效率高
    2 List arrayList = new ArrayList(); 
    3 // 底层数据结构是数组,查询快,增删慢,线程安全,效率低,耗性能
    4 List vector = new Vector();
    5 // 底层数据结构是链表,查询慢,增删快,线程不安全,效率高
    6 List linkedList = new LinkedList();

      c、Set接口:一个无序、不可重复的集合,常用实现类HashSet、LinkedHashSet、TreeSet;

    1 // 元素无序,不可重复,线程不安全,集合元素可以为 NULL
    2 Set hashSet = new HashSet();
    3 // 底层采用链表和哈希表的算法,保证元素有序,唯一性(即不可以重复,有序),线程不安全
    4 Set linkedHashSet = new LinkedHashSet();
    5 // 底层使用红黑树算法,擅长于范围查询,元素有序,不可重复,线程不安全
    6 Set treeSet = new TreeSet();

      d、Map接口:key-value的键值对,key不允许重复,value可以,key-value通过映射关系关联,常用实现类HashMap和TreeMap;

    1 // 采用哈希表算法,key无序且不允许重复,key判断重复的标准是:key1和key2是否equals为true,并且hashCode相等 
    2 Map<String, String> hashMap = new HashMap<String, String>();
    3 // 采用红黑树算法,key有序且不允许重复,key判断重复的标准是:compareTo或compare返回值是否为0
    4 Map<String, String> treeMap = new TreeMap<String, String>();

    3、Set和List的区别:

      a、Set实例存储是无序的,不重复的数据;List实例存储的是有序的,可以重复的元素;

      b、Set检索效率低下,删除和插入效率高,删除和插入不会引起元素位置改变;

      c、List可以根据存储的数据长度自动增长List长度,查找元素效率高,插入删除效率低,插入和删除时会引起其他元素位置改变;

    4、Map和Set的关系:

      a、HashMap、HashSet 都采哈希表算法,TreeMap、TreeSet 都采用红黑树算法、LinkedHashMap、LinkedHashSet 都采用哈希表算法和红黑树算法;

      b、分析Set的底层源码,Set 集合就是由Map集合的Key组成;

    5、集合遍历:

    复制代码
     1 // 遍历List
     2 List<String> lst = new ArrayList<String>();
     3 lst.add("apple");
     4 lst.add("banana");
     5 // 第一种
     6 for(int i = 0; i < lst.size(); i++){
     7     System.out.println(lst.get(i));
     8 }
     9 // 第二种
    10 for(String str : lst){
    11     System.out.println(str);
    12 }
    13 // 第三种 迭代器
    14 Iterator it = lst.iterator();
    15 while(it.hasNext()){
    16     System.out.println(it.next());
    17 }
    18 
    19 // 遍历Map
    20 Map<String, String> map = new HashMap<String, String>();
    21 map.put("apple", "苹果");
    22 map.put("banana", "香蕉");
    23 // 第一种
    24 for(String key : map.keySet()){
    25     System.out.println(key + "——" + map.get(key));
    26 }
    27 // 第二种 推荐使用尤其是数据量大时
    28 for(Entry<String, String> entry : map.entrySet()){
    29     System.out.println(entry.getKey() + "——" + entry.getValue());
    30 }
    31 // 第三种 迭代器
    32 Iterator<Entry<String, String>> iterator = map.entrySet().iterator();
    33 while(iterator.hasNext()){
    34     Entry<String, String> entry = iterator.next();
    35     System.out.println(entry.getKey() + "——" + entry.getValue());
    36 }
    37 // 第四种 无法取到key值
    38 for(String val : map.values()){
    39     System.out.println(val);
    40 }
  • 相关阅读:
    「BJOI2018」治疗之雨
    「NOIP2016」换教室
    「HNOI2015」亚瑟王
    2019/9/15 四校联训
    【AtCoder】 ARC 097
    【AtCoder】 ARC 098
    【AtCoder】 ARC 099
    【AtCoder】 ARC 100
    React:JS中的this和箭头函数
    React:styled-components
  • 原文地址:https://www.cnblogs.com/jishumonkey/p/12195259.html
Copyright © 2011-2022 走看看