java 集合 HashSet 實現隨機雙色球 HashSet addAll() 實現去重后合並 HashSet對象去重 復寫 HashCode()方法和equals方法 ArrayList去重


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM