我正在基于谁创建Java应用程序。现在,我正在制定一种方法,在回答问题时,我需要其他卡片。
我有两个列表:
一个列表是一个ImageView列表,其中有我必须显示的24张图像视图。
另一个列表是24个地图对象的列表。
现在,如果图像视图的ID与ImageView中卡的名称相同,我想从ImageView列表中删除ImageView。
我尝试在foreach中进行一次foreach,然后从列表中删除一个项目,但我无法弄清楚。
我创建的方法:
public List<ImageView> getImageViews(List<Card> newCards){
for (ImageView imageView: new ArrayList<>(allCards)) {
String imageName = imageView.getId().toLowerCase();
for (Card card: new ArrayList<>(newCards)){
String cardName = card.getName().toLowerCase();
if (!imageName.equals(cardName)){
allCards.remove(imageView);
}
}
}
return allCards;
}
答案 0 :(得分:1)
一些指针:
1)<ul id="list1">
<li><a href="#">A</a></li>
<li><a href="#">B</a></li>
</ul>
<a href="#" />
<input id="f" />
仅在因此allCards.remove(imageView);
中覆盖了equals()时才有效
2)这意味着如果联接元素不匹配,则要删除卡:
ImageView
只有在您说出以下内容时,您才会删除该元素:
现在,如果ID为的ID,我想从ImageView列表中删除ImageView。 图片视图与ImageView中卡的名称相同。
这种方式会更好:
if (!imageName.equals(cardName)){
allCards.remove(imageView);
}
使用Iterator,您可以使事情更简单,而无需依赖equals()覆盖:
if (imageName.equals(cardName)){
allCards.remove(imageView);
break; // to go back to the outer loop
}
使用Java 8,您甚至可以做到这一点:
public List<ImageView> getImageViews(List<Card> newCards){
for (Iterator<ImageView> imageViewIt = allCards.iterator(); imageViewIt.hasNext();) {
ImageView imageView = imageViewIt.next();
String imageName = imageView.getId().toLowerCase();
for (Card card: newCards){
String cardName = card.getName().toLowerCase();
if (imageName.equals(cardName)){
imageViewIt.remove();
break;
}
}
}
return allCards;
}
此代码有效。
答案 1 :(得分:0)
我尝试在foreach中进行一次foreach,然后从 列表,但我不知道。
只需使用普通的for
循环,然后根据索引从allCards
中删除该项目即可。
代码段:
public List<ImageView> getImageViews(List<Card> newCards){
for (int i = 0; i < newCards.size(); i++) {
String cardName = newCards.get(i).getName().toLowerCase();
for (int j = 0; j < allCards.size(); j++){
String imageName = allCards.get(j).getId().toLowerCase();
if (imageName.equals(cardName)){
allCards.remove(j);
break;
}
}
}
return allCards;
}
答案 2 :(得分:0)
只需创建另一个数组即可。更轻松,更少的代码。我的Java可能并不完全正确,已经有一段时间了。但希望您能明白:
public List<ImageView> getImageViews(List<Card> newCards){
List<Card> returnObject = new List<Card>();
for (ImageView imageView: new ArrayList<>(allCards)) {
String imageName = imageView.getId().toLowerCase();
for (Card card: new ArrayList<>(newCards)){
String cardName = card.getName().toLowerCase();
//Instead of a NOT, let's look for an IS
if (imageName.equals(cardName)){
returnObject.add(imageView)
}
}
}
return allCards;
}