创建多个ArrayLists,返回函数

问题描述

我已经用 <ObjektsDEGR> 类型的对象制作了 3 个 ArrayList。

ObjektsDEGR 类:

public class ObjektsDEGR implements Serializable {

    private String voc;
    private String vocTR;
    private int index;
    private int Box;

    private transient String vocF1;
    private transient String vocF2;
    private transient String vocF3;
    private transient String vocF4;
    private transient String vocF5;

    //+++++++++++ KONSTRUKTOR +++++++++++++

    public ObjektsDEGR(int voc,int vocTR,int index,int Box,int vocF1,int vocF2,int vocF3,int vocF4,int vocF5){

        this.voc = Integer.toString(voc);
        this.vocTR = Integer.toString(vocTR);
        this.index = index;
        this.vocF1 = Integer.toString(vocF1);
        this.vocF2 = Integer.toString(vocF2);
        this.vocF3 = Integer.toString(vocF3);
        this.vocF4 = Integer.toString(vocF4);
        this.vocF5 = Integer.toString(vocF5);
        this.Box = Box;
    }

    //+++++ GETTER ++++++

    public int getIndex(){
        return index;
    }
    public String getVoc() {
        return voc;
    }
    public String getVocTR(){
        return vocTR;
    }
    public String getVocF1() {
        return vocF1;
    }
    public String getVocF2() {
        return vocF2;
    }
    public String getVocF3() {
        return vocF3;
    }
    public String getVocF4() {
        return vocF4;
    }
    public String getVocF5() {
        return vocF5;
    }
    public int getBox(){
        return Box;
    }

    //++++ SETTER +++++

    public void setIndex(int index){
        this.index = index;
    }
    public void setVoc(int voc){
        this.voc = Integer.toString(voc);
    }
    public void setVocTR(int vocTR){
        this.vocTR = Integer.toString(vocTR);
    }
    public void setVocF1(int vocF1){
        this.voc = Integer.toString(vocF1);
    }
    public void setVocF2(int vocF2){
        this.voc = Integer.toString(vocF2);
    }
    public void setVocF3(int vocF3){
        this.voc = Integer.toString(vocF3);
    }
    public void setVocF4(int vocF4){
        this.voc = Integer.toString(vocF4);
    }
    public void setVocF5(int vocF5){
        this.voc = Integer.toString(vocF5);
    }
    public void setBox (int Box){ this.Box = Box;}
}

根据“Box属性的值,我将这些对象分为 3 个 ArrayList。

如何从方法外部获取 ArrayList“outputList”?

ObjektsDEGR[] basicDEGR = new ObjektsDEGR[allVoc];

public ArrayList<ObjektsDEGR> writetoArrayList(int category) {

        ArrayList<ObjektsDEGR> Box1Filtered = new ArrayList<>();
        ArrayList<ObjektsDEGR> Box2Filtered = new ArrayList<>();
        ArrayList<ObjektsDEGR> Box3Filtered = new ArrayList<>();
        ArrayList<ObjektsDEGR> outputList = new ArrayList<>();

        Integer comparer1 = 1;
        Integer comparer2 = 2;
        Integer comparer3 = 3;

        //region Implementierung
        for (int j = ((category-1)*nV); j < nV+((category-1)*nV); j++){

        if (comparer1.equals(basicDEGR[j].getBox())) {
            Box1Filtered.add(basicDEGR[j]);
        }
            else if (comparer2.equals(basicDEGR[j].getBox())) {
                Box2Filtered.add(basicDEGR[j]);
            }
            else if (comparer3.equals(basicDEGR[j].getBox())) {
                Box3Filtered.add(basicDEGR[j]);
            }
            else {
                Box3Filtered.add(basicDEGR[j]);
            }
            }//endregion


    if (Box1Filtered.isEmpty())
    {
        if (Box2Filtered.isEmpty()) {
            outputList = Box3Filtered;
        }
        else {
            outputList = Box2Filtered;
        }
    }
    else
    {
        outputList = Box1Filtered;
    }

    public ArrayList<ObjektsDEGR> getoutputList(){
        return outputList;
    }
        }

解决方法

你不能把一个方法放在另一个方法中。

你可以直接从 writeToArrayList 返回 outputList

在 writeToArrayList 中使用

Return 代替 outputList =

您不再需要 outputList 变量了 您必须在每种情况下返回,例如在末尾有一个空列表 删除

        return outputList;
    }
,

如果你只想返回 outputList

public ArrayList<ObjektsDEGR> writeToArrayList(int category) {
    ArrayList<ObjektsDEGR> box1Filtered = new ArrayList<>();
    ArrayList<ObjektsDEGR> box2Filtered = new ArrayList<>();
    ArrayList<ObjektsDEGR> box3Filtered = new ArrayList<>();
    ArrayList<ObjektsDEGR> outputList = new ArrayList<>();

    /*
     * your main logic
     *
     * */

    return outputList;
}

如果要返回所有列表 您可以返回 ArrayList 的列表

public List<ArrayList<ObjektsDEGR>> writeToArrayList(int category) {
    ArrayList<ObjektsDEGR> box1Filtered = new ArrayList<>();
    ArrayList<ObjektsDEGR> box2Filtered = new ArrayList<>();
    ArrayList<ObjektsDEGR> box3Filtered = new ArrayList<>();
    ArrayList<ObjektsDEGR> outputList = new ArrayList<>();

    /*
     * your main logic
     *
     * */

    List<ArrayList<ObjektsDEGR>> resultList = new ArrayList<>();
    resultList.add(box1Filtered);
    resultList.add(box2Filtered);
    resultList.add(box3Filtered);
    resultList.add(outputList);
    return resultList;
}

或者数组列表,如果你有固定数量的数据要返回

public ArrayList<ObjektsDEGR>[] writeToArrayList(int category) {
    ArrayList<ObjektsDEGR> box1Filtered = new ArrayList<>();
    ArrayList<ObjektsDEGR> box2Filtered = new ArrayList<>();
    ArrayList<ObjektsDEGR> box3Filtered = new ArrayList<>();
    ArrayList<ObjektsDEGR> outputList = new ArrayList<>();

    /*
     * your main logic
     *
     * */

    return (ArrayList<ObjektsDEGR>[]) new ArrayList[]{box1Filtered,box2Filtered,box3Filtered,outputList};
}