NavigableSet.lower(E)
Javadoc表示它返回此集合中的最大元素严格小于给定元素,如果没有这样的元素,则返回null
。为什么1输出在这里?难道不是4吗?
NavigableSet original = new TreeSet();
original.add("1");
original.add("2");
original.add("3");
original.add("4");
original.add("10");
Object lower = original.lower("10");
System.out.println(lower);
答案 0 :(得分:7)
因为值为String
(s),Set
正在按lexical order进行比较。请不要使用Raw Types
。
NavigableSet<Integer> original = new TreeSet<>();
original.add(1);
original.add(2);
original.add(3);
original.add(4);
original.add(10);
Object lower = original.lower(10);
System.out.println(lower);
输出
4
答案 1 :(得分:3)
那是因为你在这里比较字符串,而不是假设的整数。所以Set中的实际顺序是:1,10,2,3,4!
使用泛型:NavigableSet<Integer> original = new TreeSet<>();
并将值添加为整数:
original.add(1);
等等。