我想知道如何遍历以下Arraylist。
public class FruitHandler {
private ArrayList<Fruits> fruit;
private ArrayList<Integer> fruitUID= new ArrayList<>();
public static FruitHandler getInstance() {
return instance;
}
public void addFruit(Fruit fruit) {
this.fruitUID.add(fruit.getfruitUID());
this.fruit.add(fruit);
}
}
我想做的是遍历fruitUID并返回该水果类的实例,该实例存储在ArrayList<Fruits> fruit
中,该实例与我的给定UID相匹配。
例如,我有一个fruitUID = 10
,我想引用存储在ArrayList<Fruits> fruit
中并有其fruitUID = 10
的水果类实例。
答案 0 :(得分:5)
如果您要检索给定一个fruitUID的Fruit
实例,那么您可能需要一个Map<Integer, Fruit>
。
您还可以只拥有Fruit
个实例的列表,并使用流和过滤器仅查找具有指定fruitUID的单个实例。
如果绝对必须使用两个列表,则需要找到指定的fruitUID的索引,并从另一个具有相同索引的列表中提取Fruit
。
编辑::如果要使用地图:
private Map<Integer, Fruits> fruits = new HashMap<>();
public void addFruit(Fruit fruit) {
fruits.put(fruit.getfruitUID(), fruit);
}
public Fruit findFruit(Integer fruitUID) {
return fruits.get(fruitUID);
}
答案 1 :(得分:1)
@Jason指出的解决方案将使您的问题更加容易,但是如果您急于考虑使用快速解决方案,则可以使用以下代码(性能不佳
public class FruitHandler {
private ArrayList<Fruits> fruit;
private ArrayList<Integer> fruitUID= new ArrayList<>();
public static FruitHandler getInstance() {
return instance;
}
public void addFruit(Fruit fruit) {
this.fruitUID.add(fruit.getfruitUID());
this.fruit.add(fruit);
}
public Fruit findFruitByFruitUID(Integer fruitUID){
for(Fruit fr: fruit){
if(fr.getfruitUID()==fruitUID){
return fr;
}
}
return null;
}
}