英文:
TreeSet not Adding Last Elements
问题
在两个项目中,我无法在某些条件下向TreeSet<Integer>
中添加任何0或1的整数。我在第一个项目中能够解决这个问题,但这一次我确实需要将我从数组中取出的每个元素都放入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中包含每个元素,因为在实际项目中,我需要生成一系列随机数并以各种方式对它们进行排序。
英文:
On two projects now, I haven't been able to add any integer of 0 or 1 to a TreeSet<Integer>
in some conditions. I was able to work around it on the first one, but I do need every element in the array I'm taking numbers from to enter the TreeSet this time. Test code below.
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);
If I put the 0 and 1 at the front of the list, it works perfectly. But I do need every element in that TreeSet under any circumstance, not just some, because in the actual project, I need to generate a bunch of random numbers and sort them in various ways.
答案1
得分: 1
你把 arr[i] 添加到了你的集合中,而不是添加 i。
英文:
You're adding arr[i] to your set, instead of adding i.
答案2
得分: 1
你可以采用这个版本,我使用了ArrayList来代替数组进行TreeSet操作,你可以添加元素,它能够正常工作
package stackoverflowtest;
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
英文:
you can take this one i do Treeset with ArrayList instead of Array you can add elements
It work fine
package stackoverflowtest;
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());
}
}
Your output
[0, 1, 10, 2, 3, 4, 6, 7, 8, 9]
[9, 8, 7, 6, 4, 3, 2, 10, 1, 0]
0
9
答案3
得分: 0
这不是在Java中打印TreeSet的方式。
以下是你应该使用的方式:
for(Integer number : set){
System.out.println(number);
}
直接打印Lists、Arrays、Sets或任何类型的集合都会得到无法使用的结果。
此外,你没有正确地将项目添加到TreeSet中。应该是:
for(int i: arr){
set.add(i);
}
英文:
That's not how you print a TreeSet in java.
This is what you should be using:
for(Integer number : set){
System.out.println(number);
}
Directly printing out Lists, Arrays, Sets or any sort of collection will always give you an unusable result.
Furthermore, you aren't properly adding items to the TreeSet. It should be:
for(int i: arr){
set.add(i);
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论