如何从嵌套的 ArrayList 访问特定元素
How do I access a specific element from a nested ArrayList
我有两个 ArrayList
private ArrayList<ArrayList<String> dataList = new ArrayList<>();
//This is a class variable
ArrayList<String> dataRow = new ArrayList<>();
//This is a method variable
我将项目添加到数据行
dataRow.add("number");
dataRow.add("firstName");
dataRow.add("surname");
dataRow.add("dateStart");
dataRow.add("dateEnd");
然后我将每个 dataRow 添加到 dataList 中,得到 ArrayLists 的 ArrayList
dataList.add(dataRow);
我的问题是:
我需要 select 每个数据行中的元素 3 和 4,但我找不到任何有效的代码。
我试过了
for (ArrayList<String> eachRow : dataList)
{
For (String eachElement : eachRow)
(
System.out.println(eachElement)
}
}
这只是打印出所有元素
我也尝试过其他代码,例如
dataList.get(eachElement)
这会在 netbeans 中抛出一个不合适的方法错误
我一发布就解决了。
内部for循环中的代码应该是:
System.out.println(eachRow.get(4));
假设您只想提取两个数组元素,您可以为此使用一个简单的 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());
您可以使用 class 来存储如下值,
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());
});
我有两个 ArrayList
private ArrayList<ArrayList<String> dataList = new ArrayList<>();
//This is a class variable
ArrayList<String> dataRow = new ArrayList<>();
//This is a method variable
我将项目添加到数据行
dataRow.add("number");
dataRow.add("firstName");
dataRow.add("surname");
dataRow.add("dateStart");
dataRow.add("dateEnd");
然后我将每个 dataRow 添加到 dataList 中,得到 ArrayLists 的 ArrayList
dataList.add(dataRow);
我的问题是:
我需要 select 每个数据行中的元素 3 和 4,但我找不到任何有效的代码。
我试过了
for (ArrayList<String> eachRow : dataList)
{
For (String eachElement : eachRow)
(
System.out.println(eachElement)
}
}
这只是打印出所有元素
我也尝试过其他代码,例如
dataList.get(eachElement)
这会在 netbeans 中抛出一个不合适的方法错误
我一发布就解决了。
内部for循环中的代码应该是:
System.out.println(eachRow.get(4));
假设您只想提取两个数组元素,您可以为此使用一个简单的 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());
您可以使用 class 来存储如下值,
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());
});