List去重、排序操作

7 篇文章 0 订阅

// list元素去重        
HashSet h = new HashSet(list);   		
list.clear();   		
list.addAll(h);		
		
// list元素属性去重		
Map<String, String> map = new HashMap();		
for (int i = 0; i < AList.size(); i++) {        
    A a = AList.get(i);        
    map.put(a.getName(), tower.getNum());// 以Name属性去重        
}        
		
// 排序		
Collections.sort(AList, new Comparator<A>() {		
    @Override        
    public int compare(A a1, A a2) {        
		// 先按照Id比,数值形式		
		if(a1.getId > a2.getId){		
			return 1;		
		}		
				
		if(a1.getId > a2.getId){		
			return -1;		
		}		
				
		// 再按照Name比,字符串形式		
		if(a1.getName().compareTo(a2.getName()) >0){		
			return 1;		
		}		
				
		if(a1.getName().compareTo(a2.getName()) >0){		
			return -1;		
		}		
				
		return 0;		
	}		
});        

// list元素属性排序和去重        
List<AList> aList_new = removeDuplicateGT(aList_old);        

private static ArrayList<A> removeDuplicateGT(List<A> aList) {        
Set<A> set = new TreeSet<A>(new Comparator<A>() {        
    @Override        
    public int compare(A a1, A a2) {        
        //字符串,则按照asicc码升序排列        
        return a1.getFromLine().compareTo(a2.getFromLine());        
    }        
});        
set.addAll(aList);        
return new ArrayList<A>(set);        
}

// lambda表达式排序(JDK1.8及以上),按数值排序
AList.sort((A o1, A o2) ->  Integer.parseInt(o2.getIdString()) - Integer.parseInt(o1.getIdString()));

// lambda表达式(JDK1.8及以上),按中文拼音排序
Collections.sort(AList,(A o1,A o2)-> Collator.getInstance(Locale.CHINESE).compare(o1.getName(),o2.getName()));

// 英文从A至Z,数字从0至9
list.sort((String s1, String s2) -> Collator.getInstance().compare(s1,s2));

List<ItemInfo> itemInfoList = new ArrayList();
// 根据ItemInfo的fallValue降序排列
itemInfoList.sort(Comparator.comparingDouble(itemInfo -> -itemInfo.getFallValue()));
借助Comparable或Comparator接口也可对对象排序,可参考:https://www.cnblogs.com/skywang12345/p/3324788.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风铃峰顶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值