java对ArrayList排序代码示例

网友投稿 189 2023-07-26


java对ArrayList排序代码示例

不废话了,直接给大家贴代码了。

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-ghttp://enerated method stub

// ArrayList arr = new ArrayList( 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 ls = new ArrayList();

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("http://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 termCmp = new Comparator() {

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 lss = new ArrayList();

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 pq = new PriorityQueue();

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 ls 进行排序的话,不需要写Comparator, 因为String本身有compareTo的实现。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java编程简单获取图片像素的方法
下一篇:后端接口文档:优化你的开发流程和提高团队协作效率
相关文章

 发表评论

暂时没有评论,来抢沙发吧~