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)));
执行以上代码后,打印9作为输出。
但实际上最大值应该是11.
为什么我得到9作为最大?
由于你的元素是字符串,Collections.max()
返回最大的值按字典顺序 http://en.wikipedia.org/wiki/Lexicographical_order.
如果您希望以数字方式比较字符串,则需要使用双参数版本Collections.max() http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#max%28java.util.Collection,%20java.util.Comparator%29并提供适当的比较器:
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));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)