publicstaticvoidfun1() {
//使用HashSet 主要用来 去重复//创建一个HashSet
Hash<String> set = new HashSet<>();
//添加 d d
boolean b1 = set.add("d");
boolean b2 = set.add("d");
set.add("a");
set.add("b");
set.add("c");
//无序(不是怎么存的 就怎么取)
System.out.println(b1);
System.out.println(b2);
System.out.println(set);
}
//创建一个HashSet 添加6个人 两两一样//通过重写对象类的 equals方法 和 HashCode方法来去重
HashSet<Person> p = new HashSet<>();
p.add(new Person("aa", 16));
p.add(new Person("aa", 16));
p.add(new Person("bb", 16));
p.add(new Person("bb", 16));
p.add(new Person("cc", 16));
p.add(new Person("cc", 16));
//使用foreach快速遍历for (Person person : p){
System.out.println(person);
}
//在Person类中 使用系统方法 自动生成 重写//hashCode和equals方法//之后使用系统自动生成的hashCode和equals方法@OverridepublicinthashCode() {
// 31是个质数finalint prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
// 判断两个对象是否相同@Overridepublicbooleanequals(Object obj) {
if (this == obj)// 如果两个对象 地址一样returntrue;// 就返回trueif (obj == null)// 如果传进来的对象是空returnfalse;//就返回falseif (getClass() != obj.getClass())// 如果两个对象不是一个类创建出来的returnfalse; // 就返回false
Person other = (Person) obj; // 向下转型(准备调用特有的方法)if (age != other.age)
returnfalse;
if (name == null) {
if (other.name != null)
returnfalse;
} elseif (!name.equals(other.name))
returnfalse;// 使用字符串类的 equals方法 比较 判断字符串是否相同returntrue;
}
//编写一个程序 获取10个 1至20分随机数,要求随机数不能重复
HashSet<Integer> set = new HashSet<>();
//集合长度 < 10 的时候 就添加while(set.size()){
int num = (int)(Math.random()*20 - 1);
set.add(num);
}
System.out.println(set);
linkedHashSet
linkedHashSet 是 Hashset的一个子类
特点: 有序(怎么存的 就能怎么取出来)
linkedHashSet<String> set = new linkedHashSet<>();set.add("z");set.add("j");set.add("a");set.add("a");set.add("v");set.add("a");
System.out.println(set);
//输入一个字符串 去掉其中重复字符
Scanner scanner = new Scanner(System.in);
String string = scanner.nextLine();
LinkedHashSet<Character> set = new LinkedHashSet<>();
char[] charArray = string.toCharArray();
for (int i = 0; i < charArray.length; i++) {
set.add(charArray[i]);
}
System.out.println(set);
//利用set集合 去除ArrayList集合中的重复元素
//(操作原ArrayList)
ArrayList<String> aList = new ArrayList<>();
aList.add("a");
aList.add("a");
aList.add("b");
aList.add("b");
aList.add("c");
aList.add("c");
LinkedHashSet<String> set = new LinkedHashSet<>();
//将 aList中的元素全都扔到 set中 去重
set.addAll(aList);
//清空原aList
aList.clear();
//把set中去完重的元素扔回aList中
aList.addAll(set);
//打印
System.out.println(aList);