我想打印出嵌套的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;
}
}
答案 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
课程中添加array
或Dataset
成员。
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();
}
}