Java的Set、Map和数组的自定义排序

本文详细介绍了Java中Set、Map和数组如何进行自定义排序,包括实现Comparator接口、使用Lambda表达式和类的静态方法。同时,文章还探讨了对Pair类型的自定义排序,以及Java中自然排序的概念和实现。
摘要由CSDN通过智能技术生成

Java的Set、Map和数组的自定义排序

该文章讲述下面三点并给出相应实例

  1. Set的三种自定义排序和遍历
  2. Map的三种自定义排序和遍历
  3. 数组的三种自定义排序

1.Set的三种自定义排序和遍历

这里的三种自定义排序分别是

  1. 实现Comparator接口的compare方法并传入构造函数

  2. 传入Lambda表达式作为函数接口的参数

  3. 以类名::静态方法名作为函数接口的参数

当然还有常用的第四种方法,让存储元素的类实现Comparabel接口的comparaTo(Object)函数,不过这里不再阐述。

这里的三种遍历集合的方式是

​ 1. 使用迭代器遍历set集合

​ 2. 使用forEach函数用Lambda表达式实现遍历集合

​ 3. 使用forEach函数用类名::静态方法名实现遍历集合

下面以重载String的排序为例,将默认的字典序改为按字符串长度排序。

使用第一种方法自定义排序

package learn;
import java.util.*;
class EachInterface{
   
	static void fuc(String key) {
   
		System.out.println(key);
	}
}
class compare implements Comparator{
    //第一种方式所需的接口实现类
	public int compare(Object _a,Object _b) {
   
		String a=(String)_a;
		String b=(String)_b;
		return a.length()-b.length();
	}
}
public class Learn {
   

	public static void main(String[] args) {
   
		TreeSet<String> mmp=new TreeSet<String>(new compare());//自定义排序的第一种方式
		mmp.add("abccc");
		mmp.add("dch2");
		mmp.add("qwe");
		/*遍历的第一种方式*/
		Iterator it=mmp.iterator();
		while(it.hasNext()) {
   
			System.out.println(it.next());
		}
		System.out.println("===================");
		
		/*遍历的第二种方式*/
		mmp.forEach( (a)->{
   System.out.println(a);}	);
		System.out.println("===================");
		
		/*遍历的第三种方式*/
		mmp.forEach(EachInterface::fuc);
		
	}
	
}

/*
输出:
qwe
dch2
abccc
===================
qwe
dch2
abccc
===================
qwe
dch2
abccc
*/

使用第二种方法自定义排序

package learn;
import java.util.*;
public class 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值