请从这种方式检索期间解释列表功能

时间:2016-06-06 10:56:35

标签: java dictionary

我有一个List<Map<String, String>> first_listMap<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");
}

请指导我。谢谢提前

2 个答案:

答案 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

它易于实现且易于理解。