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

Java常用工具類—集合排序

 更新時(shí)間:2019年03月23日 08:56:52   作者:LSmurfs  
這篇文章主要介紹了Java集合排序,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、集合排序概述

1、主要內(nèi)容

  1. 集合中的基本數(shù)據(jù)類型排序
  2. 集合中的字符串排序
  3. Comparator接口
  4. Comparable接口

回顧:

//數(shù)組的排序
int[] arr= {2,3,4,5,2,1};
Arrays.sort(arr);

2、集合排序方法

  1. 使用Collections類的sort(List list)方法
  2. sort(List list)是根據(jù)元素的自然順序?qū)χ付斜戆瓷蜻M(jìn)行排序。

二、對(duì)基本數(shù)據(jù)類型和字符串類型進(jìn)行排序

1、對(duì)基本數(shù)據(jù)類型排序

List中只能存放對(duì)象,要想存放基本數(shù)據(jù)類型的話,泛型中只能寫其對(duì)應(yīng)的包裝類。

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class IntSort {

	public static void main(String[] args) {
		//對(duì)存儲(chǔ)在List中的整形數(shù)據(jù)進(jìn)行排序
		List<Integer> list = new ArrayList<Integer>();
		list.add(5);
		list.add(9);
		list.add(3);
		list.add(1);
		System.out.println("排序前:");
		for (int n: list) {
			System.out.print(n + " ");
		}
		System.out.println();
		//對(duì)List中的數(shù)據(jù)進(jìn)行排序
		Collections.sort(list);
		System.out.println("排序后:");
		for (int n: list) {
			System.out.print(n + " ");
		}
	}
	
}

2、對(duì)字符串排序

集合中字符串的排序后其實(shí)是按字符順序,ASCII值順序進(jìn)行排序的

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class StringSort {

	public static void main(String[] args) {
		//對(duì)存放在List中的字符串進(jìn)行排序。
		List<String> list = new ArrayList<String>();
		list.add("orange");
		list.add("blue");
		list.add("yellow");
		list.add("gray");
		System.out.println("排序前: ");
		for (String str: list) {
			System.out.print(str + " ");
		}
		System.out.println();
		//對(duì)List中的數(shù)據(jù)進(jìn)行排序
		Collections.sort(list);
		System.out.println("排序后: ");
		for (String str: list) {
			System.out.print(str + " ");
		}
		//排序后其實(shí)是按字母順序
	}

}

三、Comparator接口

1、問題場(chǎng)景:

自定義的類如何排序?

2、解決方法:

使用Comparable或Comparator接口

3、Comparator接口介紹

  1. 強(qiáng)行對(duì)某個(gè)對(duì)象進(jìn)行整體排序的比較函數(shù)
  2. 可以將Comparator傳遞給sort方法(如Collections.sort或 Arrays.sort)
  3. 包含方法int compare(T o1, T o2) 比較用來排序的兩個(gè)參數(shù)  –如果o1<o2,返回負(fù)整數(shù)   –如果o1==o2,返回0  –如果o1>o2,返回正整數(shù)
  4. 包含方法boolean equals(Object obj)指示某個(gè)其他對(duì)象是否“等于”此Comparator。此方法可以被Object類中的equals方法覆蓋,不必重寫,也就是說,我們?cè)贑omparator接口中只需要重寫compare這個(gè)方法。

4、對(duì)寵物貓進(jìn)行排序

對(duì)自定義的類按照一定的規(guī)則進(jìn)行排序:
(1)對(duì)寵物貓按名字進(jìn)行排序
String類型具有compareTo()方法

例:

int n = name1.conpareTo(name2);

如果name1<name2時(shí),那么n是負(fù)整數(shù),相等則為0,否則為正整數(shù)。
name1與name2位置調(diào)換下,則會(huì)實(shí)現(xiàn)倒序的排序。

import java.util.Comparator;
//按名字進(jìn)行升序排序的比較器
public class NameComparator implements Comparator<Cat> {

	@Override
	public int compare(Cat o1, Cat o2) {
		//按名字升序排序
		String name1 = o1.getName();
		String name2 = o2.getName();
		int n = name1.compareTo(name2);
		return n;
	}
	
}

語法格式:

Collections.sort(catList, new NameComparator());

(2)對(duì)寵物貓按年齡降序排序

  1. 調(diào)用compare方法大于0,就把前一個(gè)數(shù)和后一個(gè)數(shù)交換,也就是把大的數(shù)放后面了,即所謂的升序了。如果第二個(gè)參數(shù)與第一個(gè)參數(shù)調(diào)換順序,也就是降序了。
  2. 按int類型比較,直接返回減法后的差值。
import java.util.Comparator;
//按年齡進(jìn)行降序排序的比較器
public class AgeComparator implements Comparator<Cat> {

	@Override
	public int compare(Cat o1, Cat o2) {
		int age1 = o1.getMonth();
		int age2 = o2.getMonth();
		return age2 - age1;
	}

}

 語法格式:

Collections.sort(catList, new AgeComparator());

四、Comparable接口

1、Comparable概述

  1. Comparable接口位于Java.lang包下面
  2. 此接口強(qiáng)行對(duì)實(shí)現(xiàn)他的每個(gè)類的對(duì)象進(jìn)行整體排序
  3. 這種排序被稱為類的自然排序,類的compareTo方法被稱為它的自然比較方法
  4. 對(duì)于集合,通過調(diào)用Collection.sort方法進(jìn)行排序
  5. 對(duì)于數(shù)組,通過調(diào)用Arrays.sort方法進(jìn)行排序
  6. int compareTo(T o)方法:該對(duì)象小于,等于或大于指定對(duì)象,則分別返回負(fù)整數(shù),0,或正整數(shù)

2、對(duì)商品價(jià)格進(jìn)行降序排序案例

(1)操作步驟

  1. 對(duì)待排序的類進(jìn)行接口實(shí)現(xiàn)
  2. 重寫compareTo方法
  3. 直接調(diào)用Collections.sort()方法。

(2)代碼實(shí)現(xiàn)
①商品類的定義

public class Goods implements Comparable<Goods> { //實(shí)現(xiàn)Comparable接口,利用泛型限定比較的類型
	private String id; //商品編號(hào)
	private String name; //商品名稱
	private double price; //商品價(jià)格
	//構(gòu)造方法
	public Goods() {
		
	}
	public Goods(String id, String name, double price) {
		this.setId(id);
		this.setName(name);
		this.setPrice(price);
	}
	
	//getter和setter方法
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
	
	
	@Override
	public String toString() {
		return "商品編號(hào):" + id + ",商品名稱:" + name + ",商品價(jià)格:" + price;
	}

	@Override
	public int compareTo(Goods o) {  //重寫compareTo方法。
		//取出商品價(jià)格
		double price1 = this.getPrice();
		double price2 = o.getPrice();
		int n = new Double(price2 - price1).intValue();  //double類型的差值轉(zhuǎn)為int
		return n;
	}

②排序步驟

Collections.sort(goodsList);

五、集合排序總結(jié)

Comparator和Comparable接口的區(qū)別

1、Comparator:

①位于java.util包
②在要比較的類的外部實(shí)現(xiàn)該接口
③調(diào)用sort方法時(shí),要指定Comparator的實(shí)現(xiàn)類
使用順序:

  1. 實(shí)現(xiàn)要排序的接口
  2. 實(shí)現(xiàn)comparator接口
  3. 測(cè)試

2、Comparable

①位于java.lang包
②在要比較的類上實(shí)現(xiàn)該接口
③調(diào)用sort方法時(shí),只需指定集合名即可
使用順序:

定義要比較的類,并實(shí)現(xiàn)comparable接口
測(cè)試

以上所述是小編給大家介紹的Java集合排序詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • SpringBoot 利用MultipartFile上傳本地圖片生成圖片鏈接的實(shí)現(xiàn)方法

    SpringBoot 利用MultipartFile上傳本地圖片生成圖片鏈接的實(shí)現(xiàn)方法

    這篇文章主要介紹了SpringBoot 利用MultipartFile上傳本地圖片生成圖片鏈接的實(shí)現(xiàn)方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • java常用的加密解決方案分享

    java常用的加密解決方案分享

    這篇文章全面介紹了Java中加解密技術(shù)的應(yīng)用,包括哈希函數(shù)、對(duì)稱加密、非對(duì)稱加密、消息認(rèn)證碼和數(shù)字簽名等,它詳細(xì)解釋了每種技術(shù)的工作原理,并提供了相應(yīng)的Java代碼示例,文章還強(qiáng)調(diào)了密鑰管理的重要性,并提出了在實(shí)際應(yīng)用中遵循的最佳實(shí)踐
    2025-01-01
  • mybatis plus表的創(chuàng)建時(shí)間和修改時(shí)間的操作方法

    mybatis plus表的創(chuàng)建時(shí)間和修改時(shí)間的操作方法

    這篇文章主要介紹了mybatis plus表的創(chuàng)建時(shí)間和修改時(shí)間的實(shí)現(xiàn)方法,本文給大家分享兩種方法,每種方法通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-09-09
  • Java數(shù)據(jù)結(jié)構(gòu)篇之實(shí)現(xiàn)二叉搜索樹的核心方法

    Java數(shù)據(jù)結(jié)構(gòu)篇之實(shí)現(xiàn)二叉搜索樹的核心方法

    二叉搜索樹是一種常用的數(shù)據(jù)結(jié)構(gòu),它是一棵二叉樹,且每個(gè)節(jié)點(diǎn)的值都大于其左子樹中任何節(jié)點(diǎn)的值,而小于其右子樹中任何節(jié)點(diǎn)的值,這篇文章主要給大家介紹了關(guān)于Java數(shù)據(jù)結(jié)構(gòu)篇之實(shí)現(xiàn)二叉搜索樹的核心方法,需要的朋友可以參考下
    2023-12-12
  • JavaWeb實(shí)現(xiàn)注冊(cè)用戶名檢測(cè)

    JavaWeb實(shí)現(xiàn)注冊(cè)用戶名檢測(cè)

    這篇文章主要為大家詳細(xì)介紹了JavaWeb實(shí)現(xiàn)注冊(cè)用戶名檢測(cè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Java的Hibernate框架數(shù)據(jù)庫操作中鎖的使用和查詢類型

    Java的Hibernate框架數(shù)據(jù)庫操作中鎖的使用和查詢類型

    這篇文章主要介紹了Java的Hibernate框架數(shù)據(jù)庫操作中鎖的使用和查詢類型,Hibernate是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下
    2016-01-01
  • 最新版?IDEA?2022.1?正式上線新功能一覽

    最新版?IDEA?2022.1?正式上線新功能一覽

    4月12日,最新版的IDEA?2022.1正式發(fā)布,無論是從UI上,還是功能上,都有了很大的改進(jìn),完善,一起來看一下都有那些重要的更新
    2022-04-04
  • Java高并發(fā)編程之CAS實(shí)現(xiàn)無鎖隊(duì)列代碼實(shí)例

    Java高并發(fā)編程之CAS實(shí)現(xiàn)無鎖隊(duì)列代碼實(shí)例

    這篇文章主要介紹了Java高并發(fā)編程之CAS實(shí)現(xiàn)無鎖隊(duì)列代碼實(shí)例,在多線程操作中,我們通常會(huì)添加鎖來保證線程的安全,那么這樣勢(shì)必會(huì)影響程序的性能,那么為了解決這一問題,于是就有了在無鎖操作的情況下依然能夠保證線程的安全,需要的朋友可以參考下
    2023-12-12
  • java關(guān)鍵字super的騷操作詳解

    java關(guān)鍵字super的騷操作詳解

    關(guān)鍵字super在Java中用于引用當(dāng)前類的父類(即超類)的構(gòu)造方法、訪問父類的成員變量和方法,它提供了一種方便的方式來處理繼承關(guān)系中的父類操作,下面我們就來看看它有哪些騷操作吧
    2023-09-09
  • SpringBoot中LogBack日志配置與多環(huán)境實(shí)戰(zhàn)

    SpringBoot中LogBack日志配置與多環(huán)境實(shí)戰(zhàn)

    在現(xiàn)代軟件開發(fā)中,日志記錄是不可或缺的一部分,Spring Boot 提供了多種日志框架的支持,其中 Logback 是一個(gè)非常流行的選擇,因?yàn)樗唵?、高效且功能?qiáng)大,本文將介紹如何在 Spring Boot 項(xiàng)目中配置 Logback,并實(shí)現(xiàn)不同環(huán)境下的日志配置,需要的朋友可以參考下
    2025-01-01

最新評(píng)論

夹江县| 浦东新区| 井冈山市| 琼结县| 垣曲县| 平遥县| 武强县| 灌南县| 杭州市| 灵宝市| 邵武市| 绍兴市| 阳东县| 嫩江县| 通州区| 略阳县| 遂平县| 峡江县| 卢龙县| 武隆县| 洮南市| 偃师市| 怀宁县| 南充市| 乌海市| 安化县| 京山县| 蒙城县| 丘北县| 长葛市| 大城县| 湖口县| 北海市| 黄陵县| 苍山县| 天峻县| 安新县| 安吉县| 多伦县| 岢岚县| 奈曼旗|