Java:如何按大小对多个ArrayList进行排序?

时间:2010-08-13 13:32:29

标签: java sorting arraylist

我有9个不同的ArrayList,我希望得到前5名的列表。

我正在考虑按照尺寸对ArrayLists进行排序。

有可能吗?如果是这样,我怎么能实现呢?


经过几次尝试后我终于开始工作,只想与大家分享。

获得arraylist的大小并将其添加到大型arraylist

会更好
// creates an ArrayList that holds ArrayLists 
List allTheLists = new ArrayList(); 
allTheLists.add(pbaustraliaList.size());
allTheLists.add(pbotherList.size()); 
allTheLists.add(pbunitedStatesList.size()); 
allTheLists.add(pbunitedKingdomList.size()); 
allTheLists.add(pbchinaList.size()); 
allTheLists.add(pbgermanyList.size()); 
allTheLists.add(pbindiaList.size()); 
allTheLists.add(pbjapanList.size()); 
allTheLists.add(pbsingaporeList.size()); 
Comparator comparator = Collections.reverseOrder();
Collections.sort(allTheLists,comparator);

//display elements of ArrayList    
System.out.println("ArrayList elements after sorting in descending order : ");    
for(int i=0; i<allTheLists.size(); i++) {     
    System.out.println(allTheLists.get(i));   
}

2 个答案:

答案 0 :(得分:26)

您可以做的是:

// this List of lists will need to contain 
// all of the ArrayLists you would like to sort
List<ArrayList> allTheLists; 
Collections.sort(allTheLists, new Comparator<ArrayList>(){
    public int compare(ArrayList a1, ArrayList a2) {
        return a2.size() - a1.size(); // assumes you want biggest to smallest
    }
});

这将按列表的长度对列表列表进行排序。排序列表中的第一个元素将是最长列表,最后一个元素将是最短列表。

然后,您可以遍历前5个列表,看看前5个是什么。

一些供参考的链接:


根据您存储ArrayLists的方式,创建List<ArrayList>的代码如下所示:

// creates an ArrayList that holds ArrayLists
List<ArrayList> allTheLists = new ArrayList<ArrayList>();
allTheLists.add(yourList1);
allTheLists.add(yourList2);
...
allTheLists.add(yourList9);

答案 1 :(得分:0)

你也可以这样做

        new TextField(
              controller: _tbName,autocorrect:
              false,

              decoration: new InputDecoration(
                icon: const Icon(Icons.person),
                hintText: 'Enter your Name',
                labelText: 'Name',
                helperText: 'Required',
                errorText: nameErrorText,
              ),

              onChanged: (value) {
          //save here

              },
            ),