我如何按升序排列此列表的元素?我尝试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);
}
}
答案 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;
}