java - 如何对对象的 ArrayList 进行排序?

标签 java sorting arraylist comparator compareto

我对此很陌生,如果这是一个陈词滥调的问题,我很抱歉。我有一个 ArrayList,其中 Node 是一个自定义类。这就是我的定义:

static class Node  implements Comparable<Node> {
    String nodeName;
    String[] borderingNodes;

    public Node(String nodeName, String[] borderingNodes) {
        this.nodeName = nodeName;
        this.borderingNodes = borderingNodes;
    }       

    public int compareTo(Node node) {
        if(borderingNodes.length > node.borderingNodes.length) {
            return 1;           
        }

        if(borderingNodes.length == node.borderingNodes.length) {
            return 0;           
        }

        if(borderingNodes.length < node.borderingNodes.length) {
            return -1;          
        }
    }
}

现在,我尝试执行 Arrays.sort(inputNodes) 其中 inputNodes 是一个 ArrayList...但是我收到了错误:

 no suitable method found for sort(ArrayList<Node>)
        Arrays.sort(inputNodes);

我该如何正确地做到这一点?顺便说一句,我的排序...必须根据 borderingNodes 数组的大小进行排序。

最佳答案

使用Collections.sort(inputNodes)

Arrays.sort 用于对数组进行排序。

您当前的 compareTo 方法不会为每个代码路径返回整数。您可以使用Integer.compare

public int compareTo(Node node) {
   return Integer.compare(borderingNodes.length, node.borderingNodes.length);
}

关于java - 如何对对象的 ArrayList 进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18043652/

相关文章:

java - 如何在 Java 中找出损坏的 gz 文件

java - 基于Java中的类变量对用户定义对象的2个LinkedList进行自定义排序

c - C 插入排序中的段错误

java - 在 Java 中序列化并保存 double [] 的 ArrayList

java - 在android中创建一个空的ArrayList

javascript - 如何使用 jquery/javascript、Spring 按 id 删除?

java - ListView 中的按钮 setOnClickListener

sorting - 如何在 Yii2 GridView 中启用和禁用排序?

Linux/unix 重名

java - 如何将我在不同类中创建的列表数组引用到另一个 2