【问题标题】:Getting Only Last element From List Regardless of Index [duplicate]无论索引如何,仅从列表中获取最后一个元素[重复]
【发布时间】:2025-12-23 13:20:13
【问题描述】:

我在显示使用 Arrays 实用程序类添加到列表中的元素时遇到问题。值存储是来自下面显示的 People 类的对象

public class People {

private static Integer age;
private static String name;

public  People(String name,Integer age){

    this.age = age;
    this.name = name;
}

public Integer getAge(){
    return this.age;
}
public String getName(){
    return this.name;
}
@Override
public String toString(){
    return "name"+this.getName()+" Age"+ this.getAge();
}

}

通过以下代码将值添加到列表中:

   List<People> myPeople = Arrays.asList(

        new People("Samuel Owino", 18),
        new People("Swale Mdohe", 12),
        new People("Joseph Wambwile", 48),
        new People("Samuel Werre", 18),
        new People("Swale Mdohe", 12),
        new People("Joseph Wambwile", 48)
);

显示代码如下:

 myPeople.forEach(System.out::println);

意识到问题是在 bean 类中的实例变量、年龄和名称上使用静态访问修饰符,当删除静态时,该方法可以正常工作。感谢您的参考。

【问题讨论】:

  • 那么您到底遇到了什么问题?

标签: java list


【解决方案1】:

要获得列表的最后一项,您可以这样做:

System.out.println(myPeople.get(myPeople.size() - 1));

【讨论】:

    【解决方案2】:

    您将成员变量设置为静态,它们应该是实例级别:

    private Integer age;
    private String name;
    

    否则,列表中的每个添加都会覆盖People 对象的共享状态。

    我怀疑当变量被传递到构造函数中时,你的意思是使用final 而不是static

    【讨论】: