唐僧喜欢小龙女

导航

Map和集合整理学习

1、Java集合体系分类

java 中集合有两个体系Collection 和Map两种体系

2、笔记整理

/**
 *
 *    有序、无序是指在进行插入操作时,插入位置的顺序性,先插的位置在前,后插的位置在后,则为有序,反之无序
 *    有这么多集合容器的原因是根据不同的数据结构用不同的容器。
 *    java 中集合有两个体系Collection 和Map两种体系
 *    |---Collection---| 这是一个接口有两个子类 List和Set,用来存一个一个的对象
 *      List:存储的数据有序,先插入的在前面,后插入的在后面。
 *          ArrayList   查询快,非线程安全的。
 *          LinkedList  对于频繁的插入和删除的操作这个集合效率比较高,底层是双向列表
 *      Set:  储存的数据没有顺序,因为无序所以不能重复
 *          HashSet:Set的主要实现类,没有特殊要求用它就行,非线程安全的
 *          LinkedHashSet:HashSet 的子类,遍历其内部数据看似有序,(从结果来看和添加的顺序是一样)
 *          TreeSet:添加的元素必须是同一个类的对象,可以按照添加指定对象的属性进行排序
 *      Set的无序性的理解,如何理解他的不可重复性
 *          无序性:无序性不等于随机性,我向HashSet中随便放值,每次遍历的结果顺序都是一样的,到底他的无序性是啥意思呢。
 *                 HashSet的底层也是数组,向HashSet放值的时候放的位置是根据对值进行hash计算得到的,所以是无序的。
 *          不可重复性:两个相同的元素重写了equals和hashCode方法后就不能放入两个了,会放入一个。
 *    |---Map---| 这也是一个接口 以key value来存储
 *       HashMap
 *       HashTable
 *       TreeMap
 *
 *
 */

3、LinkedHashSet 内部结构图

LinkedHashSet添加的时候也是先对值进行hash计算,然后通过链表的方式彼此关联。记录前后位置

 

 

 

4、LinkedList 内部结构图

LinkedList 插入和删除速度快的原因如图所示,插入和删除不需要移动别的元素。

5、Map中Entry的理解

 Map 是装键值对的“盒子”,Map.Entry 是盒子里的“每一个键值对本身”。

就像:

  • 图书馆(Map) vs 一本书(Entry)
  • 数据库表(Map) vs 一行数据(Entry)
  • Excel 表格(Map) vs 一个单元格对(key 列 + value 列)→ 其实是一行(Entry)

 5.1、获取Map 中所有entry 并遍历

        Map<String, Integer> scores = Map.ofEntries(
                Map.entry("Alice", 95),
                Map.entry("Bob", 88),
                Map.entry("Charlie", 92),
                Map.entry("Diana", 97),
                Map.entry("Evan", 85),
                Map.entry("Fiona", 93),
                Map.entry("George", 97),
                Map.entry("Hannah", 90),
                Map.entry("Ian", 89),
                Map.entry("Julia", 96),
                Map.entry("Kevin", 91),
                Map.entry("Lily", 94),
                Map.entry("Mike", 87),
                Map.entry("Nina", 98),  // ← 最高分
                Map.entry("Oscar", 86),
                Map.entry("Paula", 92),
                Map.entry("Quinn", 84),
                Map.entry("Ryan", 95),
                Map.entry("Sophie", 93),
                Map.entry("Tom", 90)
        );

        //返回一个set集合,set里面存的数据是entry 类
        Set<Map.Entry<String, String>> entries1 = map.entrySet();

        entries1.forEach(entry->{
            System.out.println(entry.toString());
        });

 5.2、创建一个Entry的方式

        //这里使用Map 内部的静态方法entry,不是通过Map 内部类的方式,是一个多态
        Map.Entry<String, Integer> entry = Map.entry("Alice", 95);
        System.out.println(entry.getKey());   // Alice
        System.out.println(entry.getValue()); // 95

 



posted on 2021-07-25 18:18  与时具进&不忘初心  阅读(44)  评论(0)    收藏  举报