Java 请解释以这种方式检索时的列表功能

Java 请解释以这种方式检索时的列表功能,java,dictionary,Java,Dictionary,我有一个List first\u List和Map second\u List。每当我尝试从first\u List检索到second List(Map)的值时。我正在获取第一个\u列表中的最后一个值 我的代码是: 其中a1、a2、a3包含表中的一些列数据 前任: a1:{姓名、年龄、出生日期,…} List<Map<String, String>> first_list={"a1","a2","a3"}// example for (Map<String, Str

我有一个
List first\u List
Map second\u List
。每当我尝试从
first\u List
检索到second List(Map)的值时。我正在获取
第一个\u列表中的最后一个值

我的代码是:

其中a1、a2、a3包含表中的一些列数据 前任: a1:{姓名、年龄、出生日期,…}

List<Map<String, String>> first_list={"a1","a2","a3"}// example
for (Map<String, String> second_list: firstList) {
String name = second_list.get("name");
}
List first\u List={“a1”、“a2”、“a3”}//示例
用于(地图第二个列表:第一个列表){
String name=second_list.get(“name”);
}

请引导我。提前感谢

可能一些经过良好编译的代码将有助于理解您的代码行为

@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);
    }

}

可能一些经过良好编译的代码将有助于理解您的代码行为

@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);
    }

}

阅读您的评论后:

List>first_List={a1,a2,a3},其中a1,a2,a3不是变量,而是它的对象。。例:a1{名称:苹果,年龄:10;大小:8},a2{名称:葡萄,年龄:12;大小:5}

我不明白你为什么要用地图列表来实现一个复杂的场景。老实说,我不明白你的问题

但无论如何,我只是想引导你们找到另一个我更喜欢的解决方案。使用
贴图
只需创建一个对象
即可

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> fruits = new ArrayList<>();
fruits.add(fruitApple);
fruits.add(fruitGrape);

这是一个简单的实现,易于理解。

阅读您的评论后:

List>first_List={a1,a2,a3},其中a1,a2,a3不是变量,而是它的对象。。例:a1{名称:苹果,年龄:10;大小:8},a2{名称:葡萄,年龄:12;大小:5}

我不明白你为什么要用地图列表来实现一个复杂的场景。老实说,我不明白你的问题

但无论如何,我只是想引导你们找到另一个我更喜欢的解决方案。使用
贴图
只需创建一个对象
即可

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> fruits = new ArrayList<>();
fruits.add(fruitApple);
fruits.add(fruitGrape);

这是一个易于实现且易于理解的方法。

在每次迭代中覆盖变量名,以便在离开for循环后,最后一个元素的值存储在“name”中。您能解释一下您想用代码实现什么吗?目标是什么?我想从列表中获取三个名称..但实际情况是仅获取最后一个值..@PatrickNow,我将字符串名称声明为全局变量,但它显示了相同的内容..@Joachim Rohde..全局变量不会更改任何内容,您仍然会覆盖该值。要么将名称存储在列表中,要么直接在for循环中处理名称。另外,请看一下popalka的答案,以了解您在那里所做的工作。您在每次迭代中都会覆盖变量名,以便在离开for循环后,最后一个元素的值存储在“name”中。您能解释一下您想用代码实现什么吗?目标是什么?我想从列表中获取三个名称..但实际情况是仅获取最后一个值..@PatrickNow,我将字符串名称声明为全局变量,但它显示了相同的内容..@Joachim Rohde..全局变量不会更改任何内容,您仍然会覆盖该值。要么将名称存储在列表中,要么直接在for循环中处理名称。另外,请看一下popalka的答案,了解你在那里做什么。伙计,我没有使用数组。请引导我浏览list,list first_list={a1,a2,a3},其中a1,a2,a3不是变量,而是它的对象。每个对象都包含如下内容。。例:a1{名称:苹果,年龄:10;大小:8},a2{名称:葡萄,年龄:12;大小:5}。。。现在,从这里开始,我不使用数组。请引导我通过list,list first_list={a1,a2,a3},其中a1,a2,a3不是变量,它的对象。每个对象包含如下内容。。例:a1{名称:苹果,年龄:10;大小:8},a2{名称:葡萄,年龄:12;大小:5}。。。现在从here@Rangith如果你喜欢这个答案,就接受或/和投票吧。@partrick,我这么做了。但这表明你需要15个声望才能投票。我只有11个声望reputation@Rangith再试一次;)但接受答案总是可能的,还是不可能的?@Rangith如果你喜欢答案,就接受或/并投票。@partrick,我这么做了。但这表明你需要15个声望才能投票。我只有11个reputation@Rangith再试一次;)但接受答案总是可能的,还是不可能?