英文:
How do I access a specific element from a nested ArrayList
问题
我有两个ArrayLists
private ArrayList<ArrayList<String>> dataList = new ArrayList<>();
//这是一个类变量
ArrayList<String> dataRow = new ArrayList<>();
//这是一个方法变量
我向dataRow添加项目
dataRow.add("number");
dataRow.add("firstName");
dataRow.add("surname");
dataRow.add("dateStart");
dataRow.add("dateEnd");
然后我将每个dataRow添加到dataList中,从而得到一个ArrayList的ArrayLists
dataList.add(dataRow);
我的问题是:
我需要从每个dataRow中选择第3和第4个元素,我找不到任何可行的代码。
我尝试过
for (ArrayList<String> eachRow : dataList)
{
for (String eachElement : eachRow)
{
System.out.println(eachElement);
}
}
这只会打印出所有的元素。
我还尝试过其他代码,比如
dataList.get(eachElement)
这在NetBeans中会引发一个没有合适的方法错误。
英文:
I have two ArrayLists
private ArrayList<ArrayList<String> dataList = new ArrayList<>();
//This is a class variable
ArrayList<String> dataRow = new ArrayList<>();
//This is a method variable
I add items to dataRow
dataRow.add("number");
dataRow.add("firstName");
dataRow.add("surname");
dataRow.add("dateStart");
dataRow.add("dateEnd");
and then I add each dataRow to dataList resulting in an ArrayList of ArrayLists
dataList.add(dataRow);
My Question is:
I need to select just elements 3 and 4 from each dataRow and I can't find any code that works.
I have tried
for (ArrayList<String> eachRow : dataList)
{
For (String eachElement : eachRow)
(
System.out.println(eachElement)
}
}
All this does is print out all the elements
I have also tried other code such as
dataList.get(eachElement)
this throws a no suitable method error in netbeans
答案1
得分: 0
我一发布这个帖子就解决了。
内部循环中的代码应为:
System.out.println(eachRow.get(4));
英文:
I worked it out as soon as I had posted this.
The code in the inner for loop should be:
System.out.println(eachRow.get(4));
</details>
# 答案2
**得分**: 0
假设您只想提取两个数组元素,您可以使用一个简单的POJO来实现:
```java
class YourPojo { // 将其重命名为自解释的名称
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());
英文:
Assuming you want to extract only two array elements, you could use a simple POJO for that:
class YourPojo { // rename it to something self-explanatory
private String field3;
private String field4;
// getters & setters
}
Then define an utility method extracting the data into your POJO from the raw array:
static YourPojo extractYourPojo(List<String> rawData){
YourPojo pojo = new YourPojo();
pojo.setField3(rawData.get(3));
pojo.setField4(rawData.get(4));
return pojo;
}
Then you can use the method as follows:
List<YourPojo> extracted =
dataList.stream()
.map(ClassWithUtilityMethod::extractYourPojo)
.collect(toList());
答案3
得分: 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;
}
}
并且可以使用以下代码来提取第三和第四个值,
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());
});
英文:
You can have a class to store values like below,
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;
}
}
And use the below to extract the 3rd and 4th values,
List<ExtractedValue> extracted= dataList.stream().map(l -> new ExtractedValue(l.get(3), l.get(4)))
.collect(Collectors.toList());
To print you can use the below,
extracted.stream().forEach(e -> {
System.out.println(e.getValue3());
System.out.println(e.getValue4());
});
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论