2014-10-24 6 views
5

Il NavigableSet.lower(E) Javadoc dice che restituisce l'elemento più grande in questo set rigorosamente meno dell'elemento specificato, o null se non esiste tale elemento. Perché 1 è l'output qui? Non dovrebbe essere 4?Come è 1 maggiore di 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); 

risposta

7

Poiché i valori sono String (s) il Set di comparazione di da lexical order. Per favore, non usare 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); 

uscita è

4 
3

thats perché si sta confrontando stringhe qui, e non come numeri interi assunti. Quindi l'ordine nel Set è: 1, 10, 2, 3, 4!

Utilizzare i generici: NavigableSet<Integer> original = new TreeSet<>(); e aggiungere i valori come numeri interi: original.add(1); e così via.