按升序对ArrayList进行排序

时间:2015-11-02 12:47:01

标签: java sorting arraylist

我如何按升序排列此列表的元素?我尝试collections.sort但我收到了 "类型集合中的方法sort(List)不适用于参数(List)"

    List <Municipio> ms = new ArrayList <Municipio>();

    String path = "C:\\LP\\Dados_IBGE.txt";
    File f = new File(path);
    Scanner in = null;
    try {
        in = new Scanner(f);
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    while(in.hasNextLine()){
        String Linha = in.nextLine();
        StringTokenizer st = new StringTokenizer(Linha, "*");

        while(st.hasMoreTokens()){
            Municipio m = new Municipio(st.nextToken(), st.nextToken(), st.nextToken(), st.nextToken(), st.nextToken());
            ms.add(m);
        }
    }
        System.out.println(ms);
}

}

4 个答案:

答案 0 :(得分:3)

使用自定义Comparator

Collections.sort(ms, new Comparator<Municipio>() {
   @Override
   public int compare(Municipio mcOne, Municipio mcTwo) {
      return mcOne.getSortCriteria().compareTo(mcTwo.getSortCriteria());
   }
});

其中getSortCriteria()是包含对象排序条件的方法。如果要颠倒顺序,只需将返回值乘以-1

      return mcOne.getSortCriteria().compareTo(mcTwo.getSortCriteria()) * -1;

答案 1 :(得分:2)

使INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6) ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b); 实现接口Municipio或将自定义比较器作为方法Comparable的第二个参数:

sort

答案 2 :(得分:0)

您也可以通过以下方式撤消收藏:

Collections.sort(ms, Collections.reverseOrder(new Comparator<Municipio>() {
    @Override
    public int compare(final Municipio o1, final Municipio o2) {
        // TODO compare o1 and o2:
        // return 1; //if o1 > o2
        // return -1; //if o1 < o2
        // return 0; //if o1 == o2
    }
}););
来自javadoc的

  

Collections.reverseOrder:返回一个比较器,它强加了自然排序的反转   在一组实现Comparable接口的对象上......

答案 3 :(得分:0)

请使用Municipio来实现您的对象Comparable

 @Override
    public int compareTo(Municipio obj) {
       rerurn this.your_var - obj.your_var;
    }