Java 列表的排序列表
我有列表列表(列表行包含列表列)。我想按长度(.size())对ListRZS中的行进行排序 问题:在这种情况下,如何编写可工作的composator/comparableJava 列表的排序列表,java,list,sorting,Java,List,Sorting,我有列表列表(列表行包含列表列)。我想按长度(.size())对ListRZS中的行进行排序 问题:在这种情况下,如何编写可工作的composator/comparable public class Start { public static void main(String[] args) { System.out.println("Start reading from Xls"); ReaderXls1Column read = new ReaderXls1Column();
public class Start {
public static void main(String[] args) {
System.out.println("Start reading from Xls");
ReaderXls1Column read = new ReaderXls1Column();
ReaderXls readrzs = new ReaderXls();
List<String> listASU = new ArrayList<String>(read.ReaderXls1Column("Text1obj",0,1)); // Creating Lists
List<List<String>> listRZS = new ArrayList<List<String>>(readrzs.ReadXls("Text1obj",2,12));
System.out.println(listASU);
System.out.println(listRZS);
System.out.println("Reading is over");
System.out.println(listRZS);
WriterXls.main("Text1obj",listRZS);
System.out.println("Writing is over");
}
公共类启动{
公共静态void main(字符串[]args){
System.out.println(“从Xls开始读取”);
ReaderXls1Column read=新的ReaderXls1Column();
ReaderXls readrzs=新的ReaderXls();
List listASU=new ArrayList(read.ReaderXls1Column(“Text1obj”,0,1));//创建列表
List listRZS=new ArrayList(readrzs.ReadXls(“Text1obj”,2,12));
System.out.println(listASU);
System.out.println(listRZS);
System.out.println(“读取结束”);
System.out.println(listRZS);
main(“Text1obj”,listRZS);
System.out.println(“写入结束”);
}
我在没有比较器的情况下的尝试,可比性(当然,不正确)
intk=0;
而(kA只需要实现一个方法(compare
),它接受两个项目,并返回:
- 如果它们相等,则为0
- 如果第二个小于第一个,则为正值
- 如果第二个大于第一个,则为负值
在对整数值进行排序时,实现这一点的典型模式是将compare
方法中接收到的每个对象减少为一个整数,然后,如果我们调用它们a
和b
,只需返回a-b
示例(请参见在以下位置运行):
import java.util.*;
课堂测试{
公共静态void main(字符串[]args){
列表a=Arrays.asList(1);
列表b=数组.asList(1,2);
listc=Arrays.asList(1,2,3);
列表d=数组.asList(1,2,3,4);
列表测试=数组.asList(d,b,c,a);
Collections.sort(test,ListSizeComparator.INSTANCE);
用于(列表:测试){
System.out.println(list.size());
}
}
enum ListSizeComparator实现Comparator{
实例;
公共整数比较(列表一,列表另一){
返回一个.size()-other.size();
}
}
}
(顺便说一句,我使用了一个枚举,因为我们的比较器不存储任何状态。)尝试如下:
List<List<String>> myList; // load myList with values
List myList;//用值加载myList
然后按以下步骤进行排序:
Collections.sort(myList, new Comparator<List<String>>(){
@Override
public int compare(List<String> arg0, List<String> arg1) {
return arg1.size() - arg0.size();
}
});
Collections.sort(myList,newcomparator(){
@凌驾
公共整数比较(列表arg0、列表arg1){
返回arg1.size()-arg0.size();
}
});
结果的可能重复:[189、266、277]结果完全不同;您所说的“结果完全不同”是什么意思?有什么问题吗?@Eldar此比较器适用于任何类型的列表。事实上,您可以将其更改为Collection,它适用于任何集合。请注意,它对内容没有任何作用。
import java.util.*;
class Test {
public static void main(String[] args) {
List<Integer> a = Arrays.asList(1);
List<Integer> b = Arrays.asList(1,2);
List<Integer> c = Arrays.asList(1,2,3);
List<Integer> d = Arrays.asList(1,2,3,4);
List<List<Integer>> test = Arrays.asList(d,b,c,a);
Collections.sort(test, ListSizeComparator.INSTANCE);
for (List<Integer> list : test) {
System.out.println(list.size());
}
}
enum ListSizeComparator implements Comparator<List> {
INSTANCE;
public int compare(List one, List other) {
return one.size() - other.size();
}
}
}
List<List<String>> myList; // load myList with values
Collections.sort(myList, new Comparator<List<String>>(){
@Override
public int compare(List<String> arg0, List<String> arg1) {
return arg1.size() - arg0.size();
}
});