gpt4 book ai didi

java - 比较节点与 Collections.sort

转载 作者:太空宇宙 更新时间:2023-11-04 07:14:43 25 4
gpt4 key购买 nike

我得到了一个包含一些树节点的列表,并想对其进行排序。作为比较器,我使用列表中每个节点拥有的双变量。

这是我的代码:

List<TreeNode<String>> list = inputNode.getChildren();

for(TreeNode<String> childNode : list)
{
Collections.sort(list, childNode.costs);
}

TreeNode 定义如下:

public class TreeNode<T> {

public T data;
public double costs;
public List<TreeNode<T>> children;

// Bunch of getters and setters
}

我想做的是对子节点列表进行排序(降序)。我不想写一些已经存在的新东西。那么为什么我不能使用Collections.sort

Collections.sort double 不是一种可比较的数据类型吗?

最佳答案

您应该以稍微不同的方式使用它。

TreeNode 必须实现 Comparable http://docs.oracle.com/javase/6/docs/api/java/lang/Comparable.html或者将比较器编写为匿名类。

 public class TreeNode<T> implements Comparable {

public T data;
public double costs;
public List<TreeNode<T>> children;

// Bunch of getters and setters

public int compareTo(TreeNode that) { return (int)(this.cost - that.cost); }
}

 Collections.sort(ls, new Comparator() 
{

public int compare(Object o1, Object o2)
{
//typecast and compare here
}
}
);

并且,不要在循环中调用 Collections.sort。一次调用就足够了。

关于java - 比较节点与 Collections.sort,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20122198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com