亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

java筆記四:Set接口

2019-11-17 03:27:34
字體:
來源:轉載
供稿:網友

  Set不保存重復的元素。Set中最常被使用的是測試歸屬性,你可以很容易的詢問某個對象是否在某個Set中。Set具有與Collection完全一樣的接口,因此沒有任何額外的功能。實際上Set就是Collection,只是行為不同。

  實現了Set接口的主要有HashSet、TreeSet、LinkedHashSet這幾個共同點就是每個相同的項只保存一份。他們也有不同點,區別如下:

  1.HashSet:

  HashSet使用的是相當復雜的方式來存儲元素的,使用HashSet能夠最快的獲取集合中的元素,效率非常高(以空間換時間)。會根據hashcode和equals來龐端是否是同一個對象,如果hashcode一樣,并且equals返回true,則是同一個對象,不能重復存放。

復制代碼
 1 package com.set; 2  3 import java.util.HashSet; 4 import java.util.Set; 5  6 class Student{ 7     int id; 8     public Student(int id) { 9         this.id = id;10     }11     @Override12     public String toString() {13         return this.id+"";14     }15     @Override16     public int hashCode() {17         return this.id;18     }19     @Override20     public boolean equals(Object obj) {21         if (obj instanceof Student){22             Student  stu = (Student) obj;23             if (stu.id == this.id)24                 return true;25         }26         return false;27     }28 }29 public class HashSetTest {30     public static void main(String[] args) {31         Set<Student> set = new HashSet<Student>();32         Student s1 = new Student(1);33         Student s2 = new Student(1);34         Student s3 = new Student(2);35         set.add(s1);36         set.add(s2);37         set.add(s3);38         for (Student s : set) {39             System.out.PRintln(s);40         }41     }42 }
復制代碼

正如上例所示,重寫了hashCode()和equals()方法來區分同意對象后,就不能存放同以對象了。如果注釋這兩個方法,則所有Student對象視為不同對象,都可以存放。

 

  2.TreeSet

  TreeSet也不能存放重復對象,但是TreeSet會自動排序,如果存放的對象不能排序則會報錯,所以存放的對象必須指定排序規則。排序規則包括自然排序和客戶排序。

 ?、僮匀慌判颍篢reeSet要添加哪個對象就在哪個對象類上面實現java.lang.Comparable接口,并且重寫comparaTo()方法,返回0則表示是同一個對象,否則為不同對象。

 ?、诳蛻襞判颍航⒁粋€第三方類并實現java.util.Comparator接口。并重寫方法。定義集合形式為TreeSet ts = new TreeSet(new 第三方類());

下面一個例子用TreeSet存放自然排序的對象:

復制代碼
 1 package com.set; 2  3 import java.util.Set; 4 import java.util.TreeSet; 5  6 class Student1 implements Comparable<Student1>{ 7     int id; 8     public Student1(int id) { 9         this.id = id;10     }11     @Override12     public String toString() {13         return this.id+"";14     }15     @Override16     public int hashCode() {17         return this.id;18     }19     @Override20     public boolean equals(Object obj) {21         if (obj instanceof Student1){22             Student1  stu = (Student1) obj;23             if (stu.id == this.id)24                 return true;25         }26         return false;27     }28     public int compareTo(Student1 o) {29         return (this.id-o.id);30     }31 }32 33 public class TreeSetTest {34     public static void main(String[] args) {35         Set<Student1> set = new TreeSet<Student1>();36         Student1 s1 = new Student1(5);37         Student1 s2 = new Student1(1);38         Student1 s3 = new Student1(2);39         Student1 s4 = new Student1(4);40         Student1 s5 = new Student1(3);41         set.add(s1);42         set.add(s2);43         set.add(s3);44         set.add(s4);45         set.add(s5);46         for (Student1 s : set) {47             System.out.println(s);48         }49     }50 51 }
復制代碼

輸出結果為:
1
2
3
4
5

下面一個例子用TreeSet存放客戶排序的對象:

復制代碼
 1 package com.set; 2  3 import java.util.Set; 4 import java.util.TreeSet; 5  6 class MySort implements java.util.Comparator<Student2>{ 7  8     public int compare(Student2 o1, Student2 o2) { 9         return o2.id-o1.id;10     }11 }12 class Student2{13     int id;14     public Student2(int id) {15         this.id = id;16     }17     @Override18     public String toString() {19         return this.id+"";20     }21     @Override22     public int hashCode() {23         return this.id;24     }25     @Override26     public boolean equals(Object obj) {27         if (obj instanceof Student2){28             Student2  stu = (Student2) obj;29             if (stu.id == this.id)30                 return true;31         }32         return false;33     }34 }35 public class TreeSetTest2 {36     public static void main(String[] args) {37         Set<Student2> set = new TreeSet<Student2>(new MySort());38         Student2 s1 = new Student2(5);39         Student2 s2 = new Student2(1);40         Student2 s3 = new Student2(2);41         Student2 s4 = new Student2(4);42         Student2 s5 = new Student2(3);43         set.add(s1);44         set.add(s2);45         set.add(s3);46         set.add(s4);47         set.add(s5);48         for (Student2 s : set) {49             System.out.println(s);50         }51     }52 53 }
復制代碼

輸出結果為:
5
4
3
2
1

大家都知道List存放時按照插入順序排序的,其實也可以用自然排序和客戶排序對List集合排序,大家請看:

復制代碼
 1 package com.set; 2  3 import java.util.ArrayList; 4 import java.util.Collections; 5 import java.util.List; 6  7 class MySort1 implements java.util.Comparator<Student3>{ 8     public int compare(Student3 o1, Student3 o2) { 9         return o2.id-o1.id;10     }11 }12 class Student3 implements Comparable<Student3>{13     int id;14     public Student3(int id) {15         this.id = id;16     }17     @Override18     public String toString() {19         return this.id+"";20     }21     public int compareTo(Student3 o) {22         return (this.id-o.id);23     }24 }25 26 public class ListSort {27     public static void main(String[] args) {28         List<Student3> list = new ArrayList<Student3>();29         Student3 s1 = new Student3(5);30         Student3 s2 = new Student3(1);31         Student3 s3 = new Student3(2);32         Student3 s4 = new Student3(4);33         Student3 s5 = new Student3(3);34         list.add(s1);35         list.add(s2);36         list.add(s3);37         list.add(s4);38         list.add(s5);39         System.out.println(list);40         //自然排序:41         Collections.sort(list);42         System.out.println(list);43         //客戶排序44         Collections.sort(list, new MySort1());45         System.out.println(list);46     }47 }
復制代碼

輸出結果為:
[5, 1, 2, 4, 3]
[1, 2, 3, 4, 5]
[5, 4, 3, 2, 1]

 

  3.LinkedHashSet

  LinkedHashSet按照插入順序保存對象,同時還保存了HashSet的查詢速度。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产欧亚日韩视频| 日韩欧美黄色动漫| 国产一区二区香蕉| 亚洲高清在线观看| 国产精品入口免费视频一| 欧美特黄级在线| 亚洲精品美女网站| 亚洲欧美色图片| 国产精品久久婷婷六月丁香| 精品国产一区二区三区久久| 成人写真视频福利网| 欧美第一黄色网| 日韩欧美在线免费观看| 成人中文字幕+乱码+中文字幕| 777国产偷窥盗摄精品视频| 国产欧美日韩精品专区| 国产在线拍揄自揄视频不卡99| 亚洲男人天堂2024| 欧美色视频日本高清在线观看| 亚洲综合色激情五月| 国产精品视频免费在线| 日韩国产欧美精品在线| 国产一区二区三区视频免费| 尤物精品国产第一福利三区| 久久影院在线观看| 伊人亚洲福利一区二区三区| 日本免费久久高清视频| 国产精品2018| 欧美在线一级视频| 成人国产精品日本在线| 美乳少妇欧美精品| 欧美激情一区二区三级高清视频| 欧美最猛性xxxxx免费| 久久香蕉精品香蕉| 欧美日韩国产综合新一区| 搡老女人一区二区三区视频tv| 狠狠久久五月精品中文字幕| 欧美极品欧美精品欧美视频| 国产精品天天狠天天看| 日韩av中文字幕在线免费观看| 久久久精品日本| 国产成人精品网站| 日韩高清不卡av| 国产成人精品a视频一区www| 国产亚洲精品一区二555| 欧美—级高清免费播放| 国产精品自拍偷拍| 欧美日韩黄色大片| 国产成人精品在线观看| 曰本色欧美视频在线| 欧美成人免费va影院高清| 欧美日韩亚洲一区二区三区| 亚洲欧美中文字幕| 一本色道久久综合狠狠躁篇怎么玩| 中文字幕亚洲专区| 亚洲第一偷拍网| 国产精品久久久久久久久久小说| 日本一欧美一欧美一亚洲视频| 在线午夜精品自拍| 欧美大成色www永久网站婷| 国产精品日韩在线播放| 精品露脸国产偷人在视频| 一夜七次郎国产精品亚洲| 久热精品视频在线| 国产精品久久91| 欧洲成人午夜免费大片| 欧美一级淫片videoshd| 久久久精品在线观看| 成人激情视频网| 亚洲日本成人女熟在线观看| 91沈先生在线观看| 操91在线视频| 国产成人高潮免费观看精品| 亚洲最大av网| 2021久久精品国产99国产精品| 亚洲缚视频在线观看| 国产在线精品一区免费香蕉| 国产亚洲a∨片在线观看| 国产69精品久久久久99| xx视频.9999.com| 欧美性极品xxxx做受| 亚洲最大av在线| 国产欧美日韩亚洲精品| 日韩欧美亚洲综合| 日韩最新在线视频| 日韩美女在线播放| 国产精品视频专区| 韩国美女主播一区| 91国在线精品国内播放| 日韩激情视频在线播放| 久久精品中文字幕免费mv| 亚洲а∨天堂久久精品喷水| 日韩电影中文 亚洲精品乱码| 欧美成人合集magnet| 久久精品视频导航| 亚洲视频免费一区| 国模私拍一区二区三区| 欧美成人久久久| 国产精品户外野外| 久久精品青青大伊人av| 亚洲色图50p| 亚洲欧洲日本专区| 91tv亚洲精品香蕉国产一区7ujn| 97国产真实伦对白精彩视频8| www国产亚洲精品久久网站| 亚洲欧美激情精品一区二区| 亚洲精品久久久久久久久久久久| 日韩av网站导航| 久久精品亚洲国产| 久久免费高清视频| 高清欧美一区二区三区| 成人福利免费观看| 国产精品久久综合av爱欲tv| 中国人与牲禽动交精品| 国产精品久久中文| 亚洲成年人在线| 中文字幕欧美国内| 国产精品综合网站| 亚洲japanese制服美女| 国产精品吊钟奶在线| 精品国产91久久久久久| 色综合色综合网色综合| 久久伊人精品天天| 国产精品一二三视频| 成人精品一区二区三区| 国产性色av一区二区| 久久久久久久久久亚洲| 欧美黄色片在线观看| 中文字幕精品—区二区| 欧美成人精品影院| 精品福利在线视频| 三级精品视频久久久久| 亚洲伊人久久大香线蕉av| 少妇高潮久久久久久潘金莲| 欧美亚洲另类制服自拍| 国产精品久久久久免费a∨| 国产精品国产三级国产aⅴ浪潮| 国产日韩中文字幕在线| 亚洲精品国偷自产在线99热| 欧美在线视频一区| 成人性生交大片免费观看嘿嘿视频| 国产精品色午夜在线观看| 国产精品成人久久久久| 97香蕉久久超级碰碰高清版| 久久99久久亚洲国产| 国产精品久久久久久久美男| 国色天香2019中文字幕在线观看| 国产精品av在线播放| www.日韩系列| 色综合久久88色综合天天看泰| 亚洲精美色品网站| 亚洲国产日韩一区| 亚洲经典中文字幕| 国产精品一区二区三区免费视频| 国产精品 欧美在线| 久精品免费视频| 在线观看国产成人av片| 欧美激情按摩在线| 日韩视频免费在线观看| 欧美精品www在线观看| 中文字幕av一区中文字幕天堂| 亚洲片在线观看| 91精品中国老女人| 亚洲va久久久噜噜噜|