如何打印出嵌套的Arraylist对象并确定它们的大小

时间:2015-10-14 08:29:21

标签: java arraylist

我想打印出嵌套的ArrayLists。作为一名Java初学者,我无法在循环中做到这一点。 我的第二个问题是找出嵌套的ArrayList-Objects的大小。 " .size()"不起作用。

提前致谢。

这是我的代码:

package java_lernen;

import java.util.*;

public class Java_lernen {

    public static void main(String[] args) {

        Dataset ds = new Dataset();
        List<Dataset> db = new ArrayList<>();

        ds.setName("Hans");
        ds.setItem("Hans_one");
        ds.setItem("Hans_two");
        db.add(ds);

        ds.setName("Helga");
        ds.setItem("Helga_one");
        ds.setItem("Helga_two");
        ds.setItem("Helga_three");
        db.add(ds);

        System.out.println(db.size()); // size of database

        System.out.println(db.get(0).getItem(0));
        System.out.println(db.get(0).getItem(1));
        System.out.println(db.get(0).getItem(2));
        // Q1: How can i do this (above) in a loop?

        /* pseudo-code, because i have no idea how to do that!

         for (??? elem: Dataset){
             sout (size of dataset)
         }
         */
        //Q2: How to find out the size of the nested Arraylist(s)
        //.size() doesn't seem to work
    }
}

class Dataset {

    private String name;
    final ArrayList<String> arrayItem;

    public Dataset() {
        arrayItem = new ArrayList<>();
    }

    public String getName() {
        return name;
    }

    public void setName(String _name) {
        this.name = _name;
    }

    public void setItem(String _item) {
        arrayItem.add(_item);
    }

    public String getItem(int _nr) {
        String s = arrayItem.get(_nr);
        return s;
    }

}

5 个答案:

答案 0 :(得分:0)

你有一个非常误导的星座。但是每个循环看起来像这样

for(DataSet dataSet : db){
   System.out.println(dataSet.arrayItem.size());
   for(String s : dataSet.arrayItem){
       System.out.println(s);
   }
}

答案 1 :(得分:0)

在DataSet类中添加一个名为getSize

的新方法
public int getSize(){
 return arrayItem.size();
}

答案 2 :(得分:0)

您可以在DataSet类中添加一个方法 getArrayItem(),而不是直接使用 dataSet.arrayItem ,并且可以使用@Murat K建议的代码。

看起来如下。

public List<String> getArrayItem(){
    return arrayItem;
}

并且,所需的代码将通过以下方式修改:

for(DataSet dataSet : db){
   System.out.println(dataSet.getArrayItem().size());
      for(String s : dataSet.getArrayItem()){
           System.out.println(s);
       }
 }

希望这会有所帮助。

答案 3 :(得分:0)

Collection课程中添加arrayDataset成员。

class Dataset<E> {

    private List<E> items;

    public Dataset() {
        items = new ArrayList<>();
    }

    public List<E> getItems() {
        return this.items;
    }

    // ... other members and getter/setters
}

迭代并获取大小的代码

    Dataset<Integer> dataSet = new Dataset<>();
    for (Integer in : dataSet.getItems()) {
        //Iterate
    }
    System.out.println("Size " + dataSet.getItems().size());

答案 4 :(得分:0)

以下是您要求的完整代码。

package stackOverFlow;

import java.util.*;

public class Java_lernen {

public static void main(String[] args) {

    Dataset ds = new Dataset();
    Dataset ds1 = new Dataset();
    List<Dataset> db = new ArrayList<Dataset>();

    ds.setName("Hans");
    ds.setItem("Hans_one");
    ds.setItem("Hans_two");
    db.add(ds);

    ds1.setName("Helga");
    ds1.setItem("Helga_one");
    ds1.setItem("Helga_two");
    ds1.setItem("Helga_three");
    db.add(ds1);

    System.out.println(db.size()); // size of database

    // Q1: How can i do this (above) in a loop?

    /* pseudo-code, because i have no idea how to do that!


     */

    for (Dataset dss : db) {
        System.out.println(dss.getName());
        for (int i = 0; i < dss.getSizeDataset(); i++) {
            System.out.println("\t" + dss.getItem(i));
        }
    }

    //Q2: How to find out the size of the nested Arraylist(s)
    System.out.println(db.get(0).getSizeDataset());
    System.out.println(db.get(1).getSizeDataset());

}

}

class Dataset {

private String name;
final ArrayList<String> arrayItem;

public Dataset() {
    arrayItem = new ArrayList<String>();
}

public String getName() {
    return name;
}

public void setName(String _name) {
    this.name = _name;
}

public void setItem(String _item) {
    arrayItem.add(_item);
}

public String getItem(int _nr) {
    String s = arrayItem.get(_nr);
    return s;
}

public int getSizeDataset() {
    return arrayItem.size();
}

}
相关问题