package com.swift.lianxi; import java.util.HashSet; import java.util.Random; /*訓練知識點:HashSet 訓練描述 雙色球規則:雙色球每注投注號碼由6個紅色球號碼和1個藍色球號碼組成。 紅色球號碼從1—33中選擇;藍色球號碼從1—16中選擇.請隨機生成一注雙色球號碼*/ public class Test4 { public static void main(String[] args) { Random ran = new Random(); HashSet<Integer> hong = new HashSet<Integer>(); while(hong.size()<6) { int hongqiu=ran.nextInt(33)+1; hong.add(hongqiu); } int lanqiu=ran.nextInt(16)+1; System.out.print("雙色球紅球號碼是: "); for(Integer i:hong) { System.out.print(i+" "); } System.out.print(" 雙色球籃球號碼是: "); System.out.print(lanqiu+""); } }
上邊是雙色球
下邊是使用HashSet 去重后合並
package com.swift.lianxi; import java.util.ArrayList; import java.util.HashSet; /*訓練知識點:HashSet 訓練描述 有2個ArrayList,元素如下: array1 = "a","b","a","c","d",array2 = "e","f","a","d","g",將兩個集合重復項去除后合並成一個集合 操作步驟描述 1.創建ArrayList array1 2.使用add方法為array1存放對應的元素 3.創建ArrayList array2 4.使用add方法為array2存放對應的元素 5.創建HashSet用於存放去除重復的元素 6.遍歷array1,獲取到每個元素,將每個元素添加到HashSet中 7.遍歷array2,獲取到每個元素,將每個元素添加到HashSet中 8.輸出HashSet中去除重復后的元素*/ public class Test3 { public static void main(String[] args) { ArrayList<String> array1 = new ArrayList<String>(); array1.add("a"); array1.add("b"); array1.add("a"); array1.add("c"); array1.add("d"); HashSet<String> set = new HashSet<String>(); set.addAll(array1); ArrayList<String> array2 = new ArrayList<String>(); array2.add("e"); array2.add("f"); array2.add("a"); array2.add("d"); array2.add("g"); set.addAll(array2); for(String str:set) { System.out.println(str); } } }
HashSet對象去重 復寫 HashCode()方法和equals方法
package com.swift.lianxi; import java.util.HashSet; import java.util.LinkedHashSet; /*定義一個Student類,包含名稱,年齡,性別(姓名,年齡,性別完全相同視為同一學生) 創建10個Student對象,至少有兩個學生姓名,年齡,性別完全相同. 把這10個學生添加到Set集合中,不可以重復, 遍歷Set集合打印學生信息,使用兩種方式*/ public class Demo3 { public static void main(String[] args) { HashSet<Students> set = new LinkedHashSet<Students>(); set.add(new Students("zhangsan",20,"男")); set.add(new Students("lisi",22,"男")); set.add(new Students("wangwu",223,"男")); set.add(new Students("zhaoliu",1,"男")); set.add(new Students("tianqi",54,"男")); set.add(new Students("wangermazi",209,"男")); set.add(new Students("zhangsan",20,"男")); set.add(new Students("zhangsan",20,"男")); set.add(new Students("zhangsan",20,"男")); set.add(new Students("zhangsan",20,"男")); for(Students stu:set) { System.out.println(stu.toString()); } } } /** * @author Advancing-Swift * */ class Students{ private String name; private int age; private String sex; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Students(String name, int age, String sex) { super(); this.name = name; this.age = age; this.sex = sex; } public Students() { super(); } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + age; result = prime * result + ((name == null) ? 0 : name.hashCode()); result = prime * result + ((sex == null) ? 0 : sex.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Students other = (Students) obj; if (age != other.age) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; if (sex == null) { if (other.sex != null) return false; } else if (!sex.equals(other.sex)) return false; return true; } @Override public String toString() { return "Students [name=" + name + ", age=" + age + ", sex=" + sex + "]"; } }
ArrayList去重
package com.swift.kaoshi; import java.util.Iterator; import java.util.LinkedList; /*訓練描述 已知數組存放一批QQ號碼.QQ號碼最長為11位,最短為5位 String[] strs = {"12345","67891",1"2347809933","98765432102","67891","12347809933"} 將該數組里面的所有qq號都存放在LinkedList中,將list中重復元素刪除,將list中所有元素用兩種方式打印出來 操作步驟描述 1.定義QQ號碼數組String[] strs 2.創建LinkedList 3.遍歷strs獲取每個qq號碼 4.判斷LinkedList是否已經存在這個qq號碼 5.不存在這個qq號碼則添加到LinkedList中 6.增強for遍歷LinkedList 7.迭代器遍歷LinkedList*/ /* * ArrayList也可以存放唯一的內容,通過toArray()轉成數組,再通過contains判斷集合中是否存在 */ public class Test1 { public static void main(String[] args) { String[] strs = {"12345","67891","12347809933","98765432102","67891","12347809933"}; LinkedList<String> qqhao = new LinkedList<String>(); for(String str:strs) { if(!qqhao.contains(str)) { qqhao.add(str); } } Iterator<String> it = qqhao.iterator(); while(it.hasNext()) { String qq = it.next(); System.out.println(qq); } } }