我有一个List<Map<String, String>> first_list
和Map<String, String> second_list
。每当我尝试将值从first_list
检索到第二个列表(地图)时。我收到first_list
中的最后一个值。
我的代码是:
其中a1,a2,a3包含表中的某些列数据 例如: a1:{name,age,dob,..}
List<Map<String, String>> first_list={"a1","a2","a3"}// example
for (Map<String, String> second_list: firstList) {
String name = second_list.get("name");
}
请指导我。谢谢提前
答案 0 :(得分:1)
可能是一些编译良好的代码有助于理解您的代码行为
@Test
public void name() throws Exception {
Map<String,String> a1 = new HashMap<>();
Map<String,String> a2 = new HashMap<>();
Map<String,String> a3 = new HashMap<>();
a1.put("name", "a1");
a2.put("name", "a2");
a3.put("name", "a3");
List<Map<String, String>> first_list= Arrays.asList(a1,a2,a3);
for (Map<String, String> second_list: first_list) {
String name = second_list.get("name");
System.out.println("name = " + name);
}
}
将输出
name = a1
name = a2
name = a3
答案 1 :(得分:1)
阅读评论后:
列表&gt; first_list = {a1,a2,a3},其中a1,a2,a3不是变量,它的对象。每个包含这样的..例如:a1 {名称:苹果,年龄:10;大小:8},a2 {名称:葡萄,年龄:12;大小:5} ...
我不明白你为什么要使用List of Maps实现一个复杂的场景。说实话,我不明白你的问题。
但无论如何,我只是想引导你到另一种我更喜欢的解决方案。相反,使用Map<String, String>
只需创建一个对象Fruits
。
public class Fruit {
private String name;
private int age;
private int size;
public Fruit(String name, int age, int size) {
super();
this.name = name;
this.age = age;
this.size = size;
}
//getter and setter
我不知道你从哪里获得地图中的数据,但它们必须来自任何地方。如果您只是在新的水果对象中提供这些值:
Fruit fruitApple = new Fruit("apple", 10, 8);
Fruit fruitGrape = new Fruit("grape", 12, 5);
你可以把它们放在List<Fruit>
水果中。
List<Fruit> fruits = new ArrayList<>();
fruits.add(fruitApple);
fruits.add(fruitGrape);
然后你可以迭代列表。
public static void main(String[] args) {
Fruit fruitApple = new Fruit("apple", 10, 8);
Fruit fruitGrape = new Fruit("grape", 12, 5);
List<Fruit> fruits = new ArrayList<>();
fruits.add(fruitApple);
fruits.add(fruitGrape);
for(Fruit fruit : fruits){
System.out.println("name: " + fruit.getName());
}
}
输出:
name: apple
name: grape
它易于实现且易于理解。