赞
踩
Set:不包含重复元素的collection,没有带索引的方法,不能使用for循环变量
实现类:
哈希表结构(查询速度快),是一个无序的集合
- Set<Integer>set=new HashSet<>();
- set.add(1);
- set.add(3);
- set.add(2);
使用迭代器遍历
- Iterator<Integer>it=set.iterator();
- while(it.hasNext()){
- Integer n=it.next();
- sout(n);
- }
使用增强for变量
- for(Integer i:set){
- sout(i);
- }
哈希值:是一个十进制的整数,由系统随机给出(是对象的逻辑地址,不是实际储存的物理地址)
Object.hashcode():返回对象的哈希码
String类的哈希值,重写了hashcode方法,如果值相同,那么哈希值相同
给HashSet存放自定义类型元素时,需要重写对象的hashCode和equals方法,才能保证HashSet集合中的对象唯一
- public class Stu {
- private String name;
- private int age;
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
- Stu stu = (Stu) o;
- return age == stu.age && Objects.equals(name, stu.name);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(name, age);
- }
- }
java.util.LinkedHashSet集合 extends HashSet集合
LinkedHashSet集合特点:
底层是一个哈希表(数组+链表/红黑树)+链表:多了一条链表(记录元素的储存顺序),保证元素有序
- LinkedHashSet<String>linked =new LinkedHashSet<>();
- linked.add("www");
- linked.add("abc");
- linked.add("abc");
- linked.add("itcast");
- linked:www,abc,itcast(有序)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。