小编mar*_*Err的帖子

TreeSet表现得很奇怪

我遇到了TreeSet(sortedNodes)和ArrayList(nodes)的奇怪问题.在我的程序中,我有一个从Event Dispatch Thread(from ActionListener)这些行调用的方法:

        System.out.println("nodes: "+nodes.size());
        sortedNodes.addAll(nodes);
        System.out.println("sortedNodes: "+sortedNodes.size());
Run Code Online (Sandbox Code Playgroud)

问题是,在某些集合上sortedNodes.size()返回的数字低于nodes.size()(在这3行上,因此内容没有变化nodes).当我打印内容时sortedNodes,除了不包含它应该包含的所有对象之外,它甚至没有排序.奇怪的是 - 如果我再次调用整个方法,它就解决了这个问题.我没有得到它 - 在相同的集合上执行相同的代码,但第一次它不起作用,第二次它没有.有任何想法吗?

编辑:如果我的问题不是很清楚,这应该有所帮助

exportTree();
exportTree();
Run Code Online (Sandbox Code Playgroud)

pritns on output this:

nodes: 7
sortedNodes: 4
b2[23,57]a[46,97]b[65,77]c[43,43]

nodes: 7
sortedNodes: 7
a[46,97]b[65,77]b1[55,89]b2[23,57]b3[20,20]c[43,43]c1[99,88]
Run Code Online (Sandbox Code Playgroud)

比较:

public class NodeComparator implements Comparator<Node>{
    public int compare(Node o1, Node o2) {
        return o1.getLabel().compareTo(o2.getLabel());
    }
}
Run Code Online (Sandbox Code Playgroud)

节点:

public class Node {

private int order;
private String label;
private Integer[] keys;
private Node[] pointers;
private Node …
Run Code Online (Sandbox Code Playgroud)

java collections edt

0
推荐指数
1
解决办法
557
查看次数

标签 统计

collections ×1

edt ×1

java ×1