0

我有两个 ArrayList

private ArrayList<ArrayList<String> dataList = new ArrayList<>();
//This is a class variable

ArrayList<String> dataRow = new ArrayList<>();
//This is a method variable

我将项目添加到 dataRow

dataRow.add("number");
dataRow.add("firstName");
dataRow.add("surname");
dataRow.add("dateStart");
dataRow.add("dateEnd");

然后我将每个 dataRow 添加到 dataList 中,得到一个 ArrayList 的 ArrayList

dataList.add(dataRow);

我的问题是:

我只需要从每个 dataRow 中选择元素 3 和 4,我找不到任何有效的代码。

我试过了

for (ArrayList<String> eachRow : dataList)
{
    For (String eachElement : eachRow)
    (
        System.out.println(eachElement)
    }
}

所有这一切都是打印出所有元素

我也尝试过其他代码,例如

dataList.get(eachElement)

这会在 netbeans 中引发没有合适的方法错误

4

3 回答 3

0

我一发布这个就解决了。

内部 for 循环中的代码应为:

System.out.println(eachRow.get(4));
于 2020-04-03T13:01:33.613 回答
0

假设您只想提取两个数组元素,您可以使用一个简单的 POJO:

class YourPojo { // rename it to something self-explanatory
  private String field3;
  private String field4;   
  // getters & setters
}

然后定义一个实用方法,将数据从原始数组中提取到您的 POJO 中:

static YourPojo extractYourPojo(List<String> rawData){
    YourPojo pojo = new YourPojo();
    pojo.setField3(rawData.get(3));
    pojo.setField4(rawData.get(4));
    return pojo;
} 

然后你可以使用如下方法:

List<YourPojo> extracted = 
    dataList.stream()
            .map(ClassWithUtilityMethod::extractYourPojo)
            .collect(toList());
于 2020-04-03T19:44:28.013 回答
0

您可以有一个类来存储如下值,

class ExtractedValue {

  private String value3;
  private String value4;

  public ExtractedValue(String value3, String value4) {
    this.value3 = value3;
    this.value4 = value4;
  }

  public String getValue3() {
    return value3;
  }

  public String getValue4() {
    return value4;
  }
}

并使用以下内容提取第 3 和第 4 个值,

List<ExtractedValue> extracted= dataList.stream().map(l -> new ExtractedValue(l.get(3), l.get(4)))
            .collect(Collectors.toList());

要打印,您可以使用以下内容,

extracted.stream().forEach(e -> {
        System.out.println(e.getValue3());
        System.out.println(e.getValue4());
    });
于 2020-04-04T12:44:04.270 回答