2013-02-26 7 views
1

Я пишу sortedAdd(T node) метод в LinkedList. Как я могу сравнить node.key_ с current.key_? Я не могу использовать < (в порядке возрастания), так как он является общим.Collections.sort() в Java

public void sortedAdd(T node){ 
    ... 
    Node<T> current = header; 
    while (current != null) { 
    if (node.key_ < current.key_) { 
     ... 
    } 
    } 
} 
+1

изменить его на ? –

ответ

3

Попробуйте родственную:

List<String> list = new ArrayList<String>(); 

list.add("D"); 
list.add("B"); 
list.add("A"); 

Collections.sort(list); 

Чтобы объяснить, параметризованный тип (тот, в угловых скобках) должны реализовывать интерфейс Comparable.

String инвентарь Comparable.

7

java.lang.Object не орудие Сопоставимый. Collections.sort(List) ожидает T для реализации сравнимых.

From Collection.sort(List)

Сортирует указанный список в порядке возрастания, в соответствии с естественным порядком ее элементов. Все элементы в списке должны реализовать интерфейс Comparable.

я считаю, что ваш код должен быть:

List<String> list = new ArrayList<String>(); 
0

попробовать

List<String> unsortList = new ArrayList<String>(); 

unsortList.add("CCC"); 
unsortList.add("111"); 
unsortList.add("AAA"); 
unsortList.add("BBB"); 
unsortList.add("ccc"); 
unsortList.add("bbb"); 
unsortList.add("aaa"); 
unsortList.add("333"); 
unsortList.add("222"); 

//sort the list 
Collections.sort(unsortList); 
System.out.println("ArrayList is sorted"); 
    for(String temp: unsortList){ 
System.out.println(temp); 
    } 

ВЫВОД

ArrayList is sorted 

111 
222 
333 
AAA 
BBB 
CCC 
aaa 
bbb 
ccc