TreeSet 不添加最后一个元素

TreeSet not Adding Last Elements

在现在的两个项目中,在某些情况下,我无法将任何整数 0 或 1 添加到 TreeSet<Integer>。我能够在第一个上解决它,但这次我确实需要我从中获取数字的数组中的每个元素都进入 TreeSet。测试代码如下。

int[] arr = {10, 9, 8, 7, 6, 4, 3, 3, 3, 2, 2, 2, 1, 0};
java.util.TreeSet<Integer> set = new java.util.TreeSet<Integer>();
for(int i: arr)
    set.add(arr[i]);
System.out.println(set);

如果我将 0 和 1 放在列表的前面,它就可以完美运行。但是我确实在任何情况下都需要那个TreeSet中的每个元素,而不仅仅是一些,因为在实际项目中,我需要生成一堆随机数并以各种方式对它们进行排序。

这不是您在 java 中打印 TreeSet 的方式。

这是你应该使用的:

for(Integer number : set){
    System.out.println(number);
}        

直接打印列表、数组、集合或任何类型的集合总是会得到无法使用的结果。

此外,您没有正确地向 TreeSet 添加项目。应该是:

for(int i: arr){
    set.add(i);
}

您正在将 arr[i] 添加到集合中,而不是添加 i。

你可以拿这个我用 ArrayList 而不是 Array 做 Treeset 你可以添加元素
它工作正常:)

package Whosebugtest;


import java.util.ArrayList;
import java.util.List;
import java.util.TreeSet;

public class Main {

    public static void main(String[] args) {
        
        List<String> sets= new ArrayList<>();
        
        sets.add("10");
        sets.add("9");
        sets.add("8");
        sets.add("7");    
        sets.add("6");
        sets.add("4");
        sets.add("3");
        sets.add("3");
        sets.add("3");
        sets.add("2");
        sets.add("2");
        sets.add("2");
        sets.add("1");
        sets.add("0");
        
        TreeSet<String> set = new TreeSet<>();
        set.addAll(sets);
        
        System.out.println(set);        
        System.out.println(set.descendingSet());
        
        System.out.println(set.first());
        System.out.println(set.last());
        
           
    }
}

你的输出

[0, 1, 10, 2, 3, 4, 6, 7, 8, 9]
[9, 8, 7, 6, 4, 3, 2, 10, 1, 0]
0
9