java对ArrayList排序代码示例
作者:sunmenggmail 时间:2023-11-24 20:14:21
不废话了,直接给大家贴代码了。
class term {
String str;
int id;
public term(String str, int id) {
this.str = str;
this.id = id;
}
public String toString() {
return str+" "+id;
}
}
class sterm implements Comparable{
String str;
int id;
public sterm(String str, int id) {
this.str = str;
this.id = id;
}
public int compareTo(Object o) {
return ((sterm)o).id - id;
}
public String toString() {
return str+" "+id;
}
}
//method1: explicit implements Comparator
class termComparator implements Comparator {
public int compare (Object o1, Object o2) {
return ((term)o1).id - ((term)o2).id;
}
}
public class t1 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// ArrayList<Integer> arr = new ArrayList<Integer>( Arrays.asList(3,1,3,7,8,0));
//
// Collections.sort(arr, new Comparator(){
//
// public int compare(Object o1, Object o2){
// return new Double((Integer)o1).compareTo(new Double ((Integer)o2));
// }
// });
//method1
List<term> ls = new ArrayList<term>();
ls.add(new term("a",1));
ls.add(new term("b",5));
ls.add(new term("c",2));
ls.add(new term("d",2));
ls.add(new term("e",3));
ls.add(new term("f",0));
Collections.sort(ls, new termComparator());
System.out.println(ls);//[f 0, a 1, c 2, d 2, e 3, b 5]
//method2: anonymous implements
Collections.sort(ls, new Comparator(){
public int compare(Object o1, Object o2){
return ((term)o2).id - ((term)o1).id;
}
});
System.out.println(ls);//[b 5, e 3, c 2, d 2, a 1, f 0]
//method3:instantiate a Comparator template
Comparator<term> termCmp = new Comparator<term>() {
public int compare(term t1, term t2) {
return t1.id - t2.id;
}
};
Collections.sort(ls, termCmp);
System.out.println(ls);//[f 0, a 1, c 2, d 2, e 3, b 5]
//method4:element implements Comparable
List<sterm> lss = new ArrayList<sterm>();
lss.add(new sterm("a",1));
lss.add(new sterm("b",5));
lss.add(new sterm("c",2));
lss.add(new sterm("d",2));
lss.add(new sterm("e",3));
lss.add(new sterm("f",0));
Collections.sort(lss);
System.out.println(lss);//[b 5, e 3, c 2, d 2, a 1, f 0]
}
}
PrioriyQueue的用法和上述的排序类似,有三种方法:
class WordFreq implements Comparable{
public String wd;
public int freq;
public WordFreq(String wd, int freq) {
this.wd = wd;
this.freq = freq;
}
public int compareTo(Object o) {
return ((WordFreq)o).freq - freq;
}
public String toString() {
return wd+" "+freq;
}
}
public class testt {
public static void main(String[] args) {
// TODO Auto-generated method stub
PriorityQueue<WordFreq> pq = new PriorityQueue<WordFreq>();
pq.offer(new WordFreq("aaa", 3));
pq.offer(new WordFreq("bbb", 4));
pq.offer(new WordFreq("ccc",1));
while(pq.peek() != null) {
System.out.println(pq.poll());
}//从大到小输出
}
}
注意,
for (WordFreq wf : pq) {
System.out.println(wf);
}
并不保证遍历的有序
如果List<String> ls 进行排序的话,不需要写Comparator, 因为String本身有compareTo的实现。
标签:java,arraylist,排序
0
投稿
猜你喜欢
QT实现QML侧边导航栏的最简方法
2021-09-17 02:54:35
Java利用钉钉机器人实现发送群消息
2021-06-28 23:37:33
javaSE基础如何通俗的理解javaBean是什么
2023-09-20 00:34:13
SpringBoot2.0解决Long型数据转换成json格式时丢失精度问题
2022-10-31 16:56:24
java实现捕鱼达人游戏
2023-11-23 21:28:59
Java中的同步与异步详细介绍
2023-06-23 00:42:08
springcloud干货之服务注册与发现(Eureka)
2021-07-08 11:04:23
实战分布式医疗挂号通用模块统一返回结果异常日志处理
2022-01-28 16:31:32
浅谈Java由于不当的执行顺序导致的死锁
2022-08-05 22:05:33
Android实现读取NFC卡卡号示例
2021-08-06 21:08:39
C# CultureInfo类案例详解
2023-04-20 05:00:45
关于maven打包时的报错: Return code is: 501 , ReasonPhrase:HTTPS Required
2022-09-09 00:50:51
你真的知道Java中对象的销毁吗
2022-09-14 22:31:38
Java中的双重检查(Double-Check)详解
2023-02-23 21:05:23
Java日常练习题,每天进步一点点(50)
2022-05-30 13:56:08
Spring Cloud Eureka 服务上下线监控的实现
2022-02-18 21:06:15
C#中的位操作小结
2023-08-07 07:01:29
java实现小猫钓鱼游戏
2021-10-10 19:59:48
java中sleep方法和wait方法的五个区别
2023-08-27 18:37:23
关于apollo和Spring集成@Value注解通用解析
2022-03-30 23:06:03