Collections基本应用二:各种排序

本文介绍Java中集合的基本操作,如填充、替换及反转等,并深入探讨如何使用自定义比较器实现TreeSet的复杂排序逻辑,例如按字符串长度进行排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package utilities;


import java.util.*;
public class CollectionDemo2 {

 /**
  * @Collections
  */
 public static void main(String[] args) {
  /*
  List<String> list = new ArrayList<String>();
  
  list.add("abcd");
  list.add("aaa");
  list.add("zz");
  list.add("kkkkk");
  
  sop("原list::"+list);
  
  Collections.fill(list, "pp");  //全部替换
  Collections.replaceAll(list, "aaa", "pp");//按元素替换
  Collections.reverse(list);//反转
  
  sop("后来list::"+list);
  */
  
  orderDemo();
 }
 public static void orderDemo(){
  //TreeSet<String> ts = new TreeSet<String>();  //自然顺序排列
  //TreeSet<String> ts = new TreeSet<String>(new StrComparator());  //自定义顺序排列,要实现Comparator接口,复写compare方法
  //TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder());  //直接反转排序,不需要额外工作
  
  //TreeSet<String> ts = new TreeSet<String>(new StrLengthComparator());//按长度(从短到长)排序,长度相同的又按字母排序
  TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder(new StrLengthComparator()));//按长度(从长到短)排序,长度相同的又按字母排序
  
  ts.add("abcd");
  ts.add("aaa");
  ts.add("k");
  ts.add("cc");
  
  Iterator it = ts.iterator();
  while(it.hasNext()){
   sop(it.next());  //aaa->abcd->ccc->kkk
  }
 }

 
 public static void sop(Object obj){
  System.out.println(obj);
 }
}

class StrComparator implements Comparator<String>{
 public int compare(String s1,String s2){
  //return s2.compareTo(s1);  //自然顺序反向排序
  /*
  int num = s1.compareTo(s2);
  if(num>0)
   return -1;
  if(num<0)
   return 1;
  return num;
  */
  return s1.compareTo(s2);  //自然顺序排列,直接调用
 }
}

class StrLengthComparator implements Comparator<String>{
 public int compare(String s1,String s2){
  if(s1.length()>s2.length())
   return 1;
  if(s1.length()<s2.length())
   return -1;
  return s1.compareTo(s2);
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值