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

gra*_*aci 0 java sorting arraylist compareto comparator

我对此很陌生,如果这是一个陈腐的问题,那就很抱歉.我有一个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;          
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我尝试做一个Arrays.sort(inputNodes)inputNodes是一个ArrayList ...但是我得到了错误:

 no suitable method found for sort(ArrayList<Node>)
        Arrays.sort(inputNodes);
Run Code Online (Sandbox Code Playgroud)

我该如何正确地做到这一点?我的排序btw ...必须按照boundingNodes数组的大小排序.

Rei*_*eus 5

使用 Collections.sort(inputNodes)

Arrays.sort用于排序数组.

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

public int compareTo(Node node) {
   return Integer.compare(borderingNodes.length, node.borderingNodes.length);
}
Run Code Online (Sandbox Code Playgroud)