91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java怎么使用Set接口存儲沒有重復元素的數組

發布時間:2022-04-29 17:19:32 來源:億速云 閱讀:206 作者:iii 欄目:開發技術

本篇內容主要講解“Java怎么使用Set接口存儲沒有重復元素的數組”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Java怎么使用Set接口存儲沒有重復元素的數組”吧!

Set接口

        Set接口和List接口一樣,繼承Collection接口,Set接口中元素無序,并且都會以某種規則保證存入的元素不出現重復。

HashSet集合

       HashSet是Set接口的一個實現類,所存儲的元素是不可重復的,并且元素都是無序的,當向HashSet集合中添加一個對象時,首先會調用該對象的hashCode()方法來計算對象的哈希值,從而確定元素的存儲位置。如果此時哈希值相同,再調用對象的equals()方法來確保該位置沒有重復元素。

 package 集合類;
 import java.util.HashSet;
 import java.util.Iterator;
 public class Set {
     public static void main(String[] args) {
         HashSet set=new HashSet();
         set.add("hello");
         set.add("world");
         set.add("abc");
         set.add("hello");
         Iterator it=set.iterator();
         while(it.hasNext()){
             Object obj=it.next();
             System.out.print(obj+ " ");
         }
     }
 }

運行結果

Java怎么使用Set接口存儲沒有重復元素的數組

         由運行結果可以看出,取出元素的順序和添加元素的順序并不一致,并且重復的字符串被去掉了,只添加了一次,是因為HashSet集合的add()方法存入元素時,首先調用當前存入對象的hashCode()方法獲得對象的哈希值,然后根據哈希值算出一個存儲位置,如果這個位置上沒有元素,則直接將該元素存入,如果該位置上有元素存在,則會調用equal()方法讓當前存入的元素依次和該位置上的元素比較。如果返回結果為false就將該元素存入集合,返回結果為true,則說明有重復元素,將該元素舍棄。

 package 集合類;
 import java.util.HashSet;
 class Student{
     String id;
     String name;
     public Student(String id,String name){
         this.id=id;
         this.name=name;
     }
     public String toString(){
         String s = id + ":" + name;
         return s;
     }
 }
 public class Set1 {
     public static void main(String[] args) {
         HashSet hs=new HashSet();
         Student stu1=new Student("1","hello");
         Student stu2=new Student("2","world");
         Student stu3=new Student("1","hello");
         hs.add(stu1);
         hs.add(stu2);
         hs.add(stu3);
         System.out.println(hs);
     }
 }

運行結果

Java怎么使用Set接口存儲沒有重復元素的數組  

     所沒有去掉重復的元素,是因為在定義Student類時沒有重寫hashCode()和equals()方法。

package API;
 import java.util.HashSet;
 class Student{
     private String id;
     private String name;
     public Student(String id,String name){
         this.id=id;
         this.name=name;
     }
     //重寫toString方法
     public String toString(){
         return id+ ":"+name;
     }
     //重寫hashCode方法
     public int hashCode(){
         //返回id屬性的哈希值
         return id.hashCode();
     }
     public boolean equals(Object obj){
         //判斷是否是同一個對象
         if(this==obj){
             return true;
         }
         //判斷對象是Student類型
         if(!(obj instanceof Student)){
             return false;
         }
         //將對象強轉為Student類型
         Student stu=(Student)  obj;
         //判斷id是否相同
         boolean b=this.id.equals(stu.id);
         return b;
     }
 }
 public class Set2 {
     public static void main(String[] args) {
         HashSet hs=new HashSet();
         Student stu1=new Student("1","hello");
         Student stu2=new Student("2","world");
         Student stu3=new Student("1","hello");
         hs.add(stu1);
         hs.add(stu2);
         hs.add(stu3);
         System.out.println(hs);
     }
 }

運行結果

         由于Student類重寫了Object類的hashCode()和equals()方法。在hashCode()方法中返回id屬性的哈希值,在equals()方法中比較對象的id屬性是否相等,并返回結果。當調用HashSet集合的add()方法添加stu3對象時,發現它的哈希值與stu2對象相同,而且stu2.equals(stu3)返回true。HashSet認定兩個對象相同,因此重復的Student對象被去除了。

Java怎么使用Set接口存儲沒有重復元素的數組

到此,相信大家對“Java怎么使用Set接口存儲沒有重復元素的數組”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

厦门市| 晴隆县| 桦南县| 秭归县| 濮阳县| 景德镇市| 哈巴河县| 泾源县| 上犹县| 永济市| 嘉峪关市| 仁布县| 温泉县| 佛坪县| 富宁县| 兴和县| 平昌县| 邢台县| 吕梁市| 佛山市| 西畴县| 防城港市| 班戈县| 剑河县| 甘孜县| 德庆县| 万载县| 禄丰县| 新乡县| 沛县| 图片| 炉霍县| 浙江省| 荔波县| 扎兰屯市| 柳江县| 桦甸市| 甘孜县| 寿阳县| 石棉县| 彭山县|