1大于4怎么样?

时间:2014-10-24 12:42:56

标签: java collections set treeset

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);

2 个答案:

答案 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);等等。