如何在 Java 中使用比较器对 ArrayList 进行排序

默认情况下,ArrayList 中的项目按插入到列表中的顺序显示,但有时需要按升序或降序浏览这些项。此代码实现Collections.sort()按升序和降序对 a Arraylist 进行排序。

按升序对 ArrayList 进行排序

import java.util.ArrayList;
import java.util.Collections;

public class Tri {

public static void main(String[] args) {
ArrayList unsorted = new ArrayList();
nonsort.add(01”);
nonsort.add(0A”);
unsorted.add(0B”);
unsorted.add(ETX”);
unsorted.add(00”);
unsorted.add(0C”);
nonsort.add(NUL”);
unsorted.add(05”);
unsorted.add(19”);
unsorted.add(0001011”);

System.out.println(排序前”);
for(int i=0; i < unsorted.size(); i++)
System.out.println(unsorted.get(i));

System.out.println(\n排序后”);
Collections.sort(未排序);
for(int i=0; i < unsorted.size(); i++)
System.out.println(unsorted.get(i));
}
}
输出:

之前 tri
01
0A
0B
ETX
00
0C
NUL
05
19
0001011

排序后
00
0001011
01
05
0A
0B
0C
19
ETX
NUL

按降序对 ArrayList 进行排序

Collections 类还有另一个方法 Collections.sort(列表,比较器它允许您按升序和降序对 ArrayList 进行排序。此函数使用对象比较器,每次将两个对象与函数进行比较 o1.compareTo(o2).

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

public class Tri {

public static void main(String[] args) {
ArrayList unsorted = new ArrayList();
unsorted.add(11000000”);
unsorted.add(10101000”);
unsorted.add(00000001”);
unsorted.add(00001111”);
nontrié.add(00001100”);
unsorted.add(00001111”);
unsorted.add(11111111”);
nonsort.add(11111100”);
unsorted.add(00000000”);
unsorted.add(00000011”);
unsorted.add(00001110”);

System.out.println(排序前”);
for(int i=0; i < unsorted.size(); i++)
System.out.println(unsorted.get(i)+ ”);

System.out.println(\n排序后”);

Collections.sort(nonsort, new Comparator() {
@Override
public int compare(String s1, String s2)
{
/*s2 与 s1 相比,以便顺序降序
return s2.compareTo(s1);
}
});
for(int i=0; i < unsorted.size(); i++)
System.out.println(unsorted.get(i)+ ”);
}
}
输出:

Before 排序
11000000
10101000
00000001
00001111
00001100
00001111
11111111
11111100
00000000
00000011
00001110

排序后
11111111
11111100
11000000
10101000
00001111
00001111
00001110
00001100
00000011
00000001
00000000
参考:
American Standard Code for Information Interchange
Documentation Collections.sort
stackOverFlow:如何在 java