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);