我是简单的POJO类
public class Option {
String optionText;
public String getOptionText() {
return optionText;
}
public void setOptionText(String optionText) {
this.optionText = optionText;
}
@Override
public String toString() {
return optionText;
}
}
在那里我正在创建一个Set对象并希望将该对象转换为String [],我的逻辑是
public class Main {
Set<Option> options = new HashSet<Option>();
public Main() {
Option option1 = new Option();
option1.setOptionText("Option 1");
options.add(option1);
Option option2 = new Option();
option2.setOptionText("Option 2");
options.add(option2);
Option option3 = new Option();
option3.setOptionText("Option 3");
options.add(option3);
Option option4 = new Option();
option4.setOptionText("Option 4");
options.add(option4);
System.out.println("Set<Option> size is " + options.size());
System.out.println(getCorrectAnswer(options, "a"));
}
public static void main(String[] args) {
new Main();
}
public String getCorrectAnswer(Set<Option> options, String selectedOptionAsCorrect) {
String answerString = null;
String[] listOfOptions = new String[4];
int i = 0;
for (Option option : options) {
listOfOptions[i] = option.getOptionText();
System.out.println("At index " + i + " is " + option.getOptionText());
i++;
}
if(selectedOptionAsCorrect.equals("a")){
answerString = listOfOptions[0];
}
else if(selectedOptionAsCorrect.equals("b")){
answerString = listOfOptions[1];
}
else if(selectedOptionAsCorrect.equals("c")){
answerString = listOfOptions[2];
}
else if(selectedOptionAsCorrect.equals("d")){
answerString = listOfOptions[3];
}
System.out.println("Answer is " + answerString);
return answerString;
}
}
此时我想把它作为
放在控制台上Set<Option> size is 4
At index 0 is Option 1
At index 1 is Option 2
At index 2 is Option 3
At index 3 is Option 4
Answer is Option 1
Option 1
表示我正在按顺序添加Option 1
,Option 2
,Option 3
,Option 4
我希望将这些字符串以与顺序相同的顺序复制到String [] p>
listOfOptions[0]
应该是contian Option 1
listOfOptions[1]
应该是Option 2
listOfOptions[2]
应该是Option 3
listOfOptions[3]
应该是Option 4
但我的输出为
Set<Option> size is 4
At index 0 is Option 3
At index 1 is Option 1
At index 2 is Option 2
At index 3 is Option 4
Answer is Option 3
Option 3
我想问为什么
listOfOptions[0]
做contian Option 3
应该包含Option 1
,如何解决这个问题是没有任何解决方案或幕后的逻辑是什么,任何人都可以解释。
吨
ton 提前致谢
答案 0 :(得分:7)
如果您希望获得与添加元素相同的顺序,请使用LinkedHashSet<>
实施代替HashSet<>
/ TreeSet<>
。
Set<Option> options = new LinkedHashSet<>();
...
options.stream().forEach(System.out::println);
// prints all elements in the order which you'll expect
在Oracle Tutorials了解详情。我和Willy du Preez一起建议您查看lists。在你的情况下,他们可能有一个存在的地方。
答案 1 :(得分:4)
答案 2 :(得分:4)