HashSet存储自定义类型元素和LinkedHashSet集合
HashSet集合存储自定义类型元素
HashSet存储自定义类型元素
set集合报错元素唯一:
~存储的元素(String,Integer,…Student,Person…)必须重写hashCode方法和equals方法
要求:同名同年龄的人,视为同一个人,只能存储一次
public static void main(String[] args) { //创建HashSet集合存储Person HashSet<Person> set = new HashSet<>(); Person p1 = new Person("小美女",18); Person p2 = new Person("小美女",18); Person p3 = new Person("小美女",19); System.out.println(p1.hashCode());//734175839 System.out.println(p2.hashCode());//734175839 System.out.println(p1==p2);//false System.out.println(p1.equals(p2));//true set.add(p1); set.add(p2); set.add(p3); System.out.println(set);//[Person{name='小美女', age=19}, Person{name='小美女', age=18}] }
LinkedHashSet集合
- java.util.LinkedHashSet集合 extends HashSet集合
- LinkedHashSet集合特点:
- 底层是一个哈希表(数组+链表/红黑树)+链表:多了一条链表(记录元素的存储顺序),保证元素有序
public static void main(String[] args) { HashSet<String> set = new HashSet<>(); set.add("www"); set.add("abc"); set.add("itcast"); System.out.println(set);//[abc, www, itcast] LinkedHashSet<String> linked = new LinkedHashSet<>(); linked.add("www"); linked.add("abc"); linked.add("itcast"); System.out.println(linked);//[www, abc, itcast] }