Java 列表的排序列表

Java 列表的排序列表,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();

我有列表列表(列表行包含列表列)。我想按长度(.size())对ListRZS中的行进行排序

问题:在这种情况下,如何编写可工作的composator/comparable

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();
    }

    });