我有一个班级:
public class myObj {
private boolean liesIn;
private String Area;
public myObj(){
}
public myObj(boolean liesIn, String Area) {
super();
this.liesIn = liesIn;
this.Area = Area;
}
public boolean isLiesIn() {
return liesIn;
}
public void setLiesIn(boolean liesIn) {
this.liesIn = liesIn;
}
public String getArea() {
return Area;
}
public void setArea(String Area) {
this.Area = Area;
}
}
我正在用这些对象填充列表:
List<myObj> results = new ArrayList<myObj>();
for (int i = 0; i < 10; i++) {
myObj theObj = new myObj();
theObj.setLiesIn(condition);
if (condition) {
theObj.setArea(Areas.values()[i].name());
results.add(theObj);
} else {
theObj.setArea("No area");
results.add(theObj);
}
}
现在,问题在于,例如,我可能有一个真实和9个谬误,并且在退出时(当我返回结果时),我得到所有结果/对象,如:
[
{
"liesIn": false,
"Area": "No area"
},
{
"liesIn": false,
"Area": "No area"
},
{
"liesIn": true,
"Area": "Area13"
},
{
"liesIn": false,
"Area": "No area"
},
{
"liesIn": true,
"Area": "Area14"
},
....
]
所以,如果我有真正的价值观,我只想展示它们。没有任何意义来展示虚假的价值。
如果所有值都为false,我只想显示一个结果。
我想创建一个新的结果List并在旧列表中使用迭代器:
List<myObj> newresults = new ArrayList<myObj>();
Iterator<myObj> iter = results.iterator();
while (iter.hasNext()) {
myObj lies = iter.next();
if (lies.isLiesIn() == true) {
newresults.add(lies);
} else {
// add only 1 object with false value (no area)
}
}
所以,我不知道如何处理最后一段代码。也许有另一种方法可以做到。我想使用副本将results
复制到newresults
但我再也无法处理其他声明。
答案 0 :(得分:1)
这不是问题 - 你需要做的就是:
List<myObj> newresults = new ArrayList<myObj>();
Iterator<myObj> iter = results.iterator();
while (iter.hasNext()) {
myObj lies = iter.next();
if (lies.isLiesIn() == true) {
newresults.add(lies);
}
}
// if no true element was added - the list contained only false
if (newresults.size()==0 && results.size()>0) {
newresults.add(results.get(0));
}