Java-List数组排序的使用—Collections.sort()

本文介绍了如何利用Java的Collections.sort()方法对字符串数组(单词)进行排序,重点讲解了如何结合HashMap统计单词频率并按频次和字母顺序进行综合排序。适合处理场景如LeetCode 692题——找出前k个高频单词。
摘要由CSDN通过智能技术生成

Java-List数组排序的使用—Collections.sort()

在编码中 经常用到对对象数组或者map等集合的排序
下面就让我们来学习一下Collections.sort()的使用

	public  List<String> ass(String[] words, int k){
		
		//分析题意 将单词出现的频率进行从高到低的排序
		/**
		 * 首先想到的是遍历字符串数组words 放进map里面从而获取各个单词的数量 然后将map进行排序
		 * 但是 官方并没有提供map的排序方法 像Arrays.sort一样方便的排序方法、
		 * 但是集合中含有一个可以给List进行排序的方法 
		 * 
		 * 
		 */
		//基本操作放进map里面 同时将之前没有出现过的单词放进list里面
		List<String> list = new ArrayList<>();
		HashMap<String,Integer> map = new HashMap<>();
		for(int i =0;i<words.length;i++) {
			if(map.containsKey(words[i])) {
				map.put(words[i], map.get(words[i])+1);
			}else {
				map.put(words[i], 1);
				list.add(words[i]);
			}
		}
		
		// 下面就要进行排序了
	
		
		
		//首先调用这个方法之后传入一个List类型的数字  再new Comparator<T> 之后编辑器会提醒重写一个方法
		
		Collections.sort(list,new Comparator<String>() {
			//  重写这个compare 方法 返回值为int类型  
			@Override
			public int compare(String o1, String o2) {
				//这里的o1 o2 就是两个单词 从list数组里面取出的单词 
				
				//可以根据你的需要来返回一个int类型的值  如果这个值大于0则更换位置 小于0则不变换位置(先这么理解 本人不专业)
				//依据题意在两个单词出现次数相同的时 按字母顺序排序
				return map.get(o1)==map.get(o2)? o1.compareTo(o2) : map.get(o1)-map.get(o2);
			
			}
		});
		//最后输出数组
		return list.subList(0, k);
	}
  • 所以在使用的过程中通过灵活变化是可以根据所需要的将数组中的对象等进行排序的
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值