Bis*_*han 10 java collections compare
ArrayList<String> dirNo = new ArrayList<String>();
dirNo.add("1");
dirNo.add("2");
dirNo.add("3");
dirNo.add("4");
dirNo.add("5");
dirNo.add("6");
dirNo.add("7");
dirNo.add("8");
dirNo.add("9");
dirNo.add("10");
dirNo.add("11");
System.out.println("max : " + Integer.parseInt(Collections.max(dirNo)));
Run Code Online (Sandbox Code Playgroud)
执行上面的代码后,打印9作为输出.
但实际上最大值应该是11.
为什么我最多得到9?
NPE*_*NPE 34
由于您的元素是字符串,Collections.max()因此返回按字典顺序排列的最大值.
如果您希望以数字方式比较字符串,则需要使用双参数版本Collections.max()并提供适当的比较器:
ArrayList<String> dirNo = new ArrayList<String>();
dirNo.add("1");
dirNo.add("2");
dirNo.add("3");
dirNo.add("4");
dirNo.add("5");
dirNo.add("6");
dirNo.add("7");
dirNo.add("8");
dirNo.add("9");
dirNo.add("10");
dirNo.add("11");
Comparator<String> cmp = new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return Integer.valueOf(o1).compareTo(Integer.valueOf(o2));
}
};
System.out.println("max : " + Collections.max(dirNo, cmp));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18733 次 |
| 最近记录: |