最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java基礎(chǔ)必學(xué)TreeSet集合

 更新時(shí)間:2022年04月01日 10:22:11   作者:再美不及姑娘你  
這篇文章主要介紹了Java必學(xué)基礎(chǔ)TreeSet集合,TreeSet集合實(shí)現(xiàn)了SortedSet接口,?可以對(duì)集合中元素進(jìn)行自然排序,?要求集合中的元素必須是可比較的。下文詳細(xì)介紹需要的朋友可以參考一下

一、特點(diǎn)

1.元素有序,這里的順序不是指的存儲(chǔ)和取出的順序,而是按照一定規(guī)則進(jìn)行排序,具體排序方法要看構(gòu)造方法

TreeSet():無參構(gòu)造,根據(jù)元素的自然順序排序也就是從小到大的排序方式進(jìn)行排序

TreeSet(Comparator comparator):帶參構(gòu)造,根據(jù)指定的比較器進(jìn)行排序

2.沒有帶索引的方法,所以不能使用for循環(huán),可以使用增強(qiáng)for循環(huán)或者迭代器

3.由于是Set集合,所以是不包含重復(fù)元素的集合

使用無參構(gòu)造進(jìn)行存儲(chǔ)數(shù)據(jù)并遍歷練習(xí):

public class TreeSetDemo {
 ?  public static void main(String[] args) {
 ? ? ?  //創(chuàng)建對(duì)象
 ? ? ?  TreeSet<Integer>ts=new TreeSet<Integer>();//注意:泛型中引用類型要用它的包裝類類型
 ? ? ?  //添加數(shù)據(jù)
 ? ? ?  ts.add(10);//自動(dòng)裝箱實(shí)現(xiàn)
 ? ? ?  ts.add(8);
 ? ? ?  ts.add(7);
 ? ? ?  ts.add(5);
 ? ? ?  ts.add(10);//由于是Set集合不包含重復(fù)元素,所以該元素不顯示
 ? ? ?  //遍歷方法一 增強(qiáng)for
 ? ? ?  for (Integer i:ts){
 ? ? ? ? ?  System.out.println(i);
 ? ? ?  }
 ? ? ?  System.out.println("--------------------------------");
 ? ? ?  //遍歷方法二 迭代器
 ? ? ?  Iterator<Integer>it =ts.iterator();
 ? ? ?  while(it.hasNext()){
 ? ? ? ? ?  System.out.println(it.next());
 ? ? ?  }
 ?  }
}

二,補(bǔ)充

TreeSet集合實(shí)現(xiàn)了SortedSet接口, 可以對(duì)集合中元素進(jìn)行自然排序, 要求集合中的元素必須是可比較的。

package com.wkcto.chapter05.set;

import java.util.Comparator;
import java.util.TreeSet;

/**
 * TreeSet集合
 * 		可以對(duì)元素進(jìn)行自然排序, 要求元素必須是可比較的
 * 			1)創(chuàng)建TreeSet集合時(shí),通過構(gòu)造方法指定Comparator比較器
 * 			2)如果沒有指定Comparator比較器, 要求元素的類必須實(shí)現(xiàn)Comparable接口
 * @author 蛙課網(wǎng)
 *
 */
public class Test03 {

	public static void main(String[] args) {
		//1) 創(chuàng)建TreeSet集合,存儲(chǔ)Person對(duì)象, 在構(gòu)造方法中指定Comparator比較器,按姓名升序排序
		TreeSet<Person> treeSet = new TreeSet<>(new Comparator<Person>() {
			//在匿名內(nèi)部類中重寫接口的抽象方法
			@Override
			public int compare(Person o1, Person o2) {
				//指定一個(gè)比較規(guī)則
				return o1.name.compareTo(o2.name);   //姓名升序
			}
		});
		
		//2)添加元素
		treeSet.add(new Person("lisi", 18));
		treeSet.add(new Person("feifei", 28));
		treeSet.add(new Person("yong", 35));
		treeSet.add(new Person("bin", 36));
		treeSet.add(new Person("zhang", 33));
		
		//3)直接打印
		System.out.println( treeSet );
		
		//4) 根據(jù)已有TreeSet創(chuàng)建新的TreeSet集合
		TreeSet<Person> treeSet22 = new TreeSet<>(treeSet);
		System.out.println( treeSet22 );
		
		//5) 使用TreeSet的無參構(gòu)造, 沒有指定Comparator比較器, 要求Person類實(shí)現(xiàn)Comparable接口
		TreeSet<Person> treeSet33 = new TreeSet<>();
		treeSet33.addAll(treeSet);		
		System.out.println( treeSet33);
	}

}

TreeSet集合底層是TreeMap,向TreeSet集合添加元素,實(shí)際上是把該元素作為鍵添加到了底層TreeMap中,TreeSet集合實(shí)際上就是底層TreeMap的鍵的集合。

package com.wkcto.chapter05.set;

import java.util.Comparator;
import java.util.TreeSet;
/**
 * 注意:
 * 		在TreeSet集合中, 是根據(jù)Comparator/Comparable的比較結(jié)果是否為0來判斷是否為同一個(gè)對(duì)象
 * 		如果Comparator的compare()方法/Comparable的compareTo()方法的返回值為0 就認(rèn)為是同一個(gè)對(duì)象
 * @author 蛙課網(wǎng)
 *
 */
public class Test04 {

	public static void main(String[] args) {
		//創(chuàng)建TreeSet集合,存儲(chǔ)Person對(duì)象, 通過構(gòu)造方法指定Comparator比較器,按年齡降序排序
		TreeSet<Person> treeSet = new TreeSet<>(new Comparator<Person>() {
			@Override
			public int compare(Person o1, Person o2) {
				return o2.age - o1.age;
			}
		});
		
		//當(dāng)前treeSet是根據(jù)年齡比較Person大小的, 在添加Person對(duì)象時(shí), 如果年齡相同就認(rèn)為是同一個(gè)對(duì)象
		treeSet.add(new Person("lisi", 18));
		treeSet.add(new Person("feifei", 18));
		treeSet.add(new Person("zhang", 18));
		treeSet.add(new Person("yong", 18));
		
		System.out.println( treeSet.size() ); 		// 1
		System.out.println( treeSet );
		System.out.println( treeSet.contains( new Person("wang", 18)));   //true
	}

}

 到此這篇關(guān)于Java必學(xué)基礎(chǔ)TreeSet集合的文章就介紹到這了,更多相關(guān)Java TreeSet集合內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 啟動(dòng)Solr提示Java版本低問題解決方案

    啟動(dòng)Solr提示Java版本低問題解決方案

    這篇文章主要介紹了啟動(dòng)Solr提示Java版本低問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Java并發(fā)編程Semaphore計(jì)數(shù)信號(hào)量詳解

    Java并發(fā)編程Semaphore計(jì)數(shù)信號(hào)量詳解

    這篇文章主要介紹了Java并發(fā)編程Semaphore計(jì)數(shù)信號(hào)量詳解,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • java門禁系統(tǒng)面向?qū)ο蟪绦蛟O(shè)計(jì)

    java門禁系統(tǒng)面向?qū)ο蟪绦蛟O(shè)計(jì)

    這篇文章主要為大家詳細(xì)介紹了java門禁系統(tǒng)面向?qū)ο蟪绦蛟O(shè)計(jì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • springboot 整合 nacos 配置實(shí)現(xiàn)多個(gè)環(huán)境不同配置

    springboot 整合 nacos 配置實(shí)現(xiàn)多個(gè)環(huán)境不同配置

    本文介紹了Nacos配置中心的優(yōu)勢(shì),包括與Apollo的性能對(duì)比,Nacos服務(wù)端的安裝與配置,以及如何在SpringBoot項(xiàng)目中集成Nacos進(jìn)行多環(huán)境配置,提供了詳細(xì)的步驟,包括下載、安裝、配置中心的創(chuàng)建和項(xiàng)目集成,旨在幫助開發(fā)者更好地使用Nacos進(jìn)行項(xiàng)目配置管理
    2024-09-09
  • Java8 接口默認(rèn)方法和靜態(tài)方法

    Java8 接口默認(rèn)方法和靜態(tài)方法

    這篇文章主要介紹了Java8 接口默認(rèn)方法和靜態(tài)方法,在默認(rèn)接口中使用關(guān)鍵字default聲明并提供具體實(shí)現(xiàn),而且該方法不需要添加public關(guān)鍵字就可以公開調(diào)用,甚至你可以在其實(shí)現(xiàn)類中覆寫,帶著對(duì)默認(rèn)接口的方法和小編一起探索下面文章內(nèi)容的靜態(tài)方法吧
    2021-10-10
  • java中PreparedStatement和Statement詳細(xì)講解

    java中PreparedStatement和Statement詳細(xì)講解

    這篇文章主要介紹了java中PreparedStatement和Statement詳細(xì)講解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Java網(wǎng)絡(luò)編程UDP實(shí)現(xiàn)多線程在線聊天

    Java網(wǎng)絡(luò)編程UDP實(shí)現(xiàn)多線程在線聊天

    這篇文章主要為大家詳細(xì)介紹了Java網(wǎng)絡(luò)編程UDP實(shí)現(xiàn)多線程在線聊天,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • SpringBoot實(shí)現(xiàn)郵件推送的詳細(xì)代碼

    SpringBoot實(shí)現(xiàn)郵件推送的詳細(xì)代碼

    在項(xiàng)目中經(jīng)常會(huì)遇到SpringBoot推送消息的業(yè)務(wù),除了站內(nèi)推送通知,郵件推送也是一種常見的方式,本文小編就帶大家實(shí)現(xiàn)郵件推送,文中有詳細(xì)代碼講解,對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-04-04
  • Java常用 Date 時(shí)間格式化、Calender日歷、正則表達(dá)式的用法小結(jié)

    Java常用 Date 時(shí)間格式化、Calender日歷、正則表達(dá)式的用法小結(jié)

    SimpleDateFormat?是Java中用于格式化和解析日期的類,它允許你將日期對(duì)象轉(zhuǎn)換為特定格式的字符串,或者將特定格式的字符串轉(zhuǎn)換為日期對(duì)象,這篇文章主要介紹了Java常用 Date 時(shí)間格式化、Calender日歷、正則表達(dá)式的用法,需要的朋友可以參考下
    2024-12-12
  • Java并發(fā)計(jì)數(shù)器的深入理解

    Java并發(fā)計(jì)數(shù)器的深入理解

    這篇文章主要給大家介紹了關(guān)于Java并發(fā)計(jì)數(shù)器的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05

最新評(píng)論

黔江区| 兰考县| 偏关县| 镇江市| 高安市| 香河县| 白水县| 克山县| 乐业县| 长白| 疏勒县| 宁津县| 上高县| 望谟县| 荃湾区| 慈溪市| 海伦市| 界首市| 弥渡县| 芦山县| 拉萨市| 奉节县| 当阳市| 长泰县| 额尔古纳市| 武定县| 渝北区| 石棉县| 磴口县| 河源市| 章丘市| 石泉县| 历史| 原阳县| 法库县| 临沧市| 贡觉县| 五莲县| 资阳市| 屏山县| 北京市|