Set系列集合、Map集合体系
Set系列集合特点:
无序:存取顺序不一致
不重复:可以去除重复
无索引:没有带索引的方法,所以不能使用普遍for循环遍历,也不能通过索引来获取元素
Set集合实现类特点:
HashSet:无序,不重复,无索引
LinkedHashSet:有序,不重复,无索引
TreeSet:排序、不重复、无索引
Set集合的功能基本上与Collection的API一致
package com.itheima.d1_set; import java.util.HashSet; import java.util.Set; public class SetDemo1 { public static void main(String[] args) { //查看Set系列集合的特点:HashSet LinkedHashSet TreeSet //无序,不重复,无索引 Set<String> sets=new HashSet<>(); sets.add("MySql"); sets.add("MySql"); sets.add("Java"); sets.add("Java"); sets.add("HTML"); sets.add("HTML"); sets.add("SpringBoot"); sets.add("SpringBoot"); System.out.println(sets);//[Java, MySql, HTML, SpringBoot] } }
package com.itheima.d1_set; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.Set; public class SetDemo1 { public static void main(String[] args) { //查看Set系列集合的特点:HashSet LinkedHashSet TreeSet //无序,不重复,无索引 Set<String> sets=new LinkedHashSet<>(); sets.add("MySql"); sets.add("MySql"); sets.add("Java"); sets.add("Java"); sets.add("HTML"); sets.add("HTML"); sets.add("SpringBoot"); sets.add("SpringBoot"); System.out.println(sets);//[MySql, Java, HTML, SpringBoot] } } Set系列集合的特点:
无序、不重复、无索引
Set集合的实现类特点
HashSet无序,不重复,无索引
LinkedHashSet:有序,不重复,无索引
TreeSet:可排序,不重复,无索引
HashSet底层原理:
HashSet集合底层采取哈希表存储的数据
哈希表是一种对于增删改查数据性能都较好的结构
哈希表的组成:
JDK8之前,底层使用数组+链表组成
JDK8之后,底层采用数组+链表+红黑树组成
在了解哈希表之前需要先理解哈希值的概念
哈希值:
是JDK根据对象的地址,按照某种规则算出来的int类型的数值
Object类型的API:
public int hashCode():返回对象的哈希值
对象的哈希值特点:
同一个对象多次调用hashCode()方法返回的哈希值是相同的
默认情况下,不同对象的哈希值是不同的
package com.itheima.d1_set; import java.util.Set; import java.util.TreeSet; /*目标:观察TreeSet对于有值特性的数据如和排序 * 学会使用自定以类型的对象进行指定规则排序*/ public class SetDemo4 { public static void main(String[] args) {