【问题标题】:Collections.sort() in JavaJava 中的 Collections.sort()
【发布时间】:2013-02-11 15:23:50
【问题描述】:

我正在LinkedList 中编写sortedAdd(T node) 方法。如何比较 node.key_current.key_?我不能使用<(升序),因为它是通用的。

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

【问题讨论】:

  • 把它改成 ?

标签: java list sorting object collections


【解决方案1】:

试试这个伙伴:

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

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

Collections.sort(list);

为了说明,参数化类型(尖括号中的那个)必须实现接口Comparable

String 实现 Comparable

【讨论】:

    【解决方案2】:

    试试

    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
    

    【讨论】:

      【解决方案3】:

      java.lang.Object实现 ComparableCollections.sort(List) 期望 T 实现 Comparable。

      From Collection.sort(List)

      将指定的列表按升序排序,根据 其元素的自然排序。列表中的所有元素必须 实现 Comparable 接口。

      我相信你的代码应该是:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-18
        • 2011-02-22
        • 2012-08-25
        • 1970-01-01
        • 2018-10-11
        • 2018-11-27
        相关资源
        最近更新 更多