Java 遍历实例的ArrayList';s变量

Java 遍历实例的ArrayList';s变量,java,Java,我想知道如何遍历下面的Arraylist public class FruitHandler { private ArrayList<Fruits> fruit; private ArrayList<Integer> fruitUID= new ArrayList<>(); public static FruitHandler getInstance() { return instance; }

我想知道如何遍历下面的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);
    }
}
公共类处理程序{
私家水果;
private ArrayList fruitUID=new ArrayList();
公共静态处理程序getInstance(){
返回实例;
}
公众水果(水果){
this.fruitUID.add(fruit.getfruitUID());
这个。水果。添加(水果);
}
}
我要做的是遍历水果UID并返回存储在
ArrayList fruit
中的水果类的实例,该实例与我给定的UID匹配


例如,我有一个
fruitUID=10
,我希望有一个存储在
ArrayList fruit
中的fruit类实例的引用,该类的
fruitUID=10
如果要检索给定fruitUID的
fruit
实例,那么您可能需要一个
映射

您还可以只拥有一个
Fruit
实例的列表,并使用流和过滤器仅查找具有指定fruitUID的单个实例

如果绝对必须使用两个列表,则需要找到指定水果UID的索引,并从同一索引处的另一个列表中提取
水果

编辑:如果要使用地图:

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);
}
private-Map-fruits=new-HashMap();
公众水果(水果){
水果.put(水果.getfruitUID(),水果);
}
公共水果findFruit(整数水果UID){
返回水果。获取(果uid);
}

由杰森提出的解决方案会使你的问题变得更容易,但是如果你着急并考虑使用快速解决方案,你可以有以下代码(在性能方面不太好)

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;
         }
}
公共类处理程序{
私家水果;
private ArrayList fruitUID=new ArrayList();
公共静态处理程序getInstance(){
返回实例;
}
公众水果(水果){
this.fruitUID.add(fruit.getfruitUID());
这个。水果。添加(水果);
}
公共水果findFruitByFruitUID(整数水果UID){
用于(水果fr:水果){
if(fr.getfruitUID()==fruitUID){
返回fr;
}
}
返回null;
}
}

我觉得我想得太多了,如何从外部类迭代水果映射?或者不需要迭代?我只是调用findFruit,仅此而已。@Emily,这就是映射的优点。不需要迭代。它会让你直接找到你要找的水果。-我强烈建议你研究一下数据结构,尤其是哈希映射。它们是计算的基石之一……这是一个优化数据查找的概念,我们每天都在使用它。