我有简单的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;
}
}
Run Code Online (Sandbox Code Playgroud)
在那里我正在创建一个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;
}
}
Run Code Online (Sandbox Code Playgroud)
在这一点上,我想把它放在控制台上
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
Run Code Online (Sandbox Code Playgroud)
系指我加入Option 1,Option 2,Option 3,Option 4按顺序我要复制这些字符串为String []中相同的顺序
listOfOptions[0]contian Option 1
listOfOptions[1]应该contian Option 2
listOfOptions[2]应该contian Option 3
listOfOptions[3]应该contian contian 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
Run Code Online (Sandbox Code Playgroud)
我想问为什么
listOfOptions[0]contian Option 3
应该包含Option 1,如何解决这个没有任何解决方案或幕后的逻辑可以任何人解释请.Ť
一吨的感谢提前
如果要按照添加元素的顺序获取元素,请使用LinkedHashSet<>实现而不是HashSet<>/ TreeSet<>.
Set<Option> options = new LinkedHashSet<>();
...
options.stream().forEach(System.out::println);
// prints all elements in the order which you'll expect
Run Code Online (Sandbox Code Playgroud)
阅读Oracle Tutorials的更多内容.我和Willy du Preez一起建议你看一下清单.在你的情况下,他们可能有一个存在的地方.