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


浙公网安备 33010602011771号