国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - Java Set集合的遍歷及實(shí)現(xiàn)類(lèi)的比較

Java Set集合的遍歷及實(shí)現(xiàn)類(lèi)的比較

2020-09-03 14:03Java之家 Java教程

這篇文章主要介紹了Java Set集合的遍歷及實(shí)現(xiàn)類(lèi)的比較的相關(guān)資料,需要的朋友可以參考下

Java Set集合遍歷及實(shí)現(xiàn)類(lèi)的比較

Java中Set集合是一個(gè)不包含重復(fù)元素的Collection,首先我們先看看遍歷方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package com.sort;
 
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
 
/**
 * 一個(gè)不包含重復(fù)元素的 collection。更確切地講,set 不包含滿足 e1.equals(e2) 的元素對(duì) e1 和 e2,
 * @author Owner
 *
 */
public class SetTest2 {
 
  public static void main(String[] args) {
    Set<String> set = new HashSet<String>();
     
    set.add("a");
    set.add("b");
    set.add("c");
    set.add("d");
    set.add("e");
     
    set.add("e");//不能放入重復(fù)數(shù)據(jù)
     
    /**
     * 遍歷方法一,迭代遍歷
     */
    for(Iterator<String> iterator = set.iterator();iterator.hasNext();){
      System.out.print(iterator.next()+" ");
    }
     
    System.out.println();
    System.out.println("********************");
     
    /**
     * for增強(qiáng)循環(huán)遍歷
     */
    for(String value : set){
      System.out.print(value+" ");
    }
  }
}

注意:這里Set集合中放入的是String類(lèi)型,假如我們放入一個(gè)自己定義的類(lèi)實(shí)例的時(shí)候,比如Person類(lèi)實(shí)例,這時(shí)候我們要自己重新hashcode和equal方法,用自己的關(guān)鍵字段來(lái)重寫(xiě),因?yàn)楫?dāng)使用HashSet時(shí),hashCode()方法就會(huì)得到調(diào)用,判斷已經(jīng)存儲(chǔ)在集合中的對(duì)象的hash code值是否與增加的對(duì)象的hash code值一致;如果不一致,直接加進(jìn)去;如果一致,再進(jìn)行equals方法的比較,equals方法如果返回true,表示對(duì)象已經(jīng)加進(jìn)去了,就不會(huì)再增加新的對(duì)象,否則加進(jìn)去。

下面分析一下Set集合的另外一個(gè)重要實(shí)現(xiàn)類(lèi)TreeSet,

TreeSet使用元素的自然順序對(duì)元素進(jìn)行排序,或者根據(jù)創(chuàng)建 set 時(shí)提供的 Comparator 進(jìn)行排序,具體取決于使用的構(gòu)造方法。

通俗一點(diǎn)講,就是可以按照排序后的列表顯示,也可以按照指定的規(guī)則排序

?
1
2
3
4
5
6
7
8
9
10
Set<String> set = new TreeSet<String>();
     
    set.add("f");
    set.add("a");
    set.add("b");
    set.add("c");
    set.add("d");
    set.add("e");
     
    System.out.println(set);

輸出:[a, b, c, d, e, f]

按照排序后輸出

那么如果我們想讓他倒序輸出呢?當(dāng)然方法很多。這里我采用指定一個(gè)規(guī)則讓他倒序輸出

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package com.sort;
 
import java.util.Comparator;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
 
public class TreeSetTest3 {
 
  public static void main(String[] args) {
    Set<String> set = new TreeSet<String>(new MyComparator());
     
    set.add("a");
    set.add("b");
    set.add("c");
    set.add("d");
    set.add("e");
    set.add("A");
     
    for(Iterator<String> iterator = set.iterator();iterator.hasNext();){
      System.out.print(iterator.next()+" ");
    }
  }
}
 
class MyComparator implements Comparator<String>{
 
  @Override
  public int compare(String o1, String o2) {
     
    return o2.compareTo(o1);//降序排列
  }
   
}

輸出:e d c b a A

如果Set集合中放入的是我們自己定義的一個(gè)類(lèi)類(lèi)型呢?

注意:一定要定義一個(gè)排序規(guī)則類(lèi)實(shí)現(xiàn)Comparator接口,與上面的方法類(lèi)似

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package com.sort;
 
import java.util.Comparator;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
 
public class TreeSetTest2 {
 
  public static void main(String[] args) {
    Set<Person> set = new TreeSet<Person>(new PersonComparator());
     
    Person p1 = new Person(10);
    Person p2 = new Person(20);
    Person p3 = new Person(30);
    Person p4 = new Person(40);
     
    set.add(p1);
    set.add(p2);
    set.add(p3);
    set.add(p4);
     
    for(Iterator<Person> iterator = set.iterator();iterator.hasNext();){
      System.out.print(iterator.next().score+" ");
    }
  }
}
 
class Person{
  int score;
   
  public Person(int score){
    this.score = score;
  }
   
  public String toString(){
    return String.valueOf(this.score);
  }
}
 
class PersonComparator implements Comparator<Person>{
 
  @Override
  public int compare(Person o1, Person o2) {
     
    return o1.score - o2.score;
  }
   
}

輸出:10 20 30 40

如果按照一個(gè)人的分?jǐn)?shù)的倒序排列,只需要更改compare方法中的o2.score-o1.score

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

原文鏈接:http://blog.csdn.net/qq_35101189/article/details/68062904

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产一区久久 | 亚洲处破女| 久久久久久久一区 | 日韩中文字幕一区二区 | 久久成人av| 亚洲在线观看免费视频 | 久久久久久久久99精品 | 日韩av中文字幕在线播放 | 成人3d动漫一区二区三区91 | 亚洲中午字幕 | 国产一区二区三区高清 | 国产精品毛片一区视频播不卡 | 久久精品99久久 | 久久国产精品久久久久久久久久 | 国产伦精品一区二区三区照片91 | 精品91| 操批网站 | 一区日韩| 国产日韩高清在线 | 亚洲欧美在线播放 | 日韩簧片 | 欧美在线观看成人 | 成人精品一区二区 | 国产精品777 | 亚洲天堂中文字幕 | 成人欧美一区二区三区在线播放 | 伊人网网站 | 国产成人av在线 | 久久久久高清视频 | 日韩一区二区不卡 | 欧美黑人性暴力猛交喷水黑人巨大 | 日日夜夜精品视频 | 在线观看的av | 久久亚洲一区 | 一区二区三区四区国产 | 在线观看日韩av | 国产精品久久久久无码av | 日韩中文字幕一区二区三区 | 日本不卡一二三区 | 成人在线免费看视频 | 欧美日韩国产在线 |