创建JAVA方法以返回多个不同类型的ArrayLists

时间:2017-11-18 23:12:39

标签: java

我正在尝试实现一个循环并遍历类型" MenuItem"的ArrayList的方法。从一个文本文件中,该文件在一个单独的类中创建诸如Entrees,Sides,Salads和Desserts之类的对象,并且所有对象都被添加到MenuItem的ArrayList中。在该方法中,我试图在读取该对象的实例时将每个对象类型分离为它们自己独立的ArrayList。如何在方法中返回每个单独的ArrayList?

public MenuManager(String dishesFile) {

        ArrayList<MenuItem> menu = FileManager.readItems(dishesFile);

        arrayMenu(menu);

    }

    public static ArrayList<MenuItem> arrayMenu(ArrayList<MenuItem> menus) {
        ArrayList<MenuItem> menu = new ArrayList<MenuItem>();

        ArrayList<Entree> entr = new ArrayList<Entree>();
        ArrayList<Side> side = new ArrayList<Side>();
        ArrayList<Salad> salad = new ArrayList<Salad>();
        ArrayList<Dessert> dess = new ArrayList<Dessert>();

        for(MenuItem menuArr : menu) {
            if(menuArr instanceof Entree) {
                entr.add(new Entree(menuArr.getName(), menuArr.getDescription(), menuArr.getCalories(), menuArr.getPrice()));
            }
            else if(menuArr instanceof Side) {
                side.add(new Side(menuArr.getName(), menuArr.getDescription(), menuArr.getCalories(), menuArr.getPrice()));
            }
            else if(menuArr instanceof Salad) {
                salad.add(new Salad(menuArr.getName(), menuArr.getDescription(), menuArr.getCalories(), menuArr.getPrice()));
            }
            else if(menuArr instanceof Dessert) {
                dess.add(new Dessert(menuArr.getName(), menuArr.getDescription(), menuArr.getCalories(), menuArr.getPrice()));
            }


        }
        return menu;

    }

2 个答案:

答案 0 :(得分:0)

您可以将它们放入这样的地图中:

Android Studio 3.0
Build #AI-171.4408382, built on October 20, 2017
JRE: 1.8.0_152-release-915-b01 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 10 10.0

答案 1 :(得分:0)

import java.util.Collections;    
import java.util.List;    

public class SortedMenuItems {

    private final List<Entree> entr;
    private final List<Side> side;
    private final List<Salad> salad;
    private final List<Dessert> dess;

    public SortedMenuItems(List<Entree> entr, List<Side> side, List<Salad> salad, List<Dessert> dess) {
        this.entr = Collections.unmodifiableList(entr)
        this.side= Collections.unmodifiableList(side)
        this.salad = Collections.unmodifiableList(salad)
        this.dess = Collections.unmodifiableList(dess)
    }

    public List<Entree> getEntrees() {
        return entr;
    }

    public List<Side> getSides() {
        return side;
    }

    public List<Salad> getSalads() {
        return salad;
    }

    public List<Desert> getDeserts() {
        return dess;
    }

}

然后将arrayMenu()的return语句更改为...

return new SortedMenuItems(entr, side, salad, dess);