有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java只从列表中获取最后一个元素,而不考虑索引

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

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类、age和name中的实例变量使用static access修饰符,当static被删除时,该方法可以完美地工作。谢谢你的推荐


共 (2) 个答案

  1. # 1 楼答案

    要获得列表的最后一项,可以执行以下操作:

    System.out.println(myPeople.get(myPeople.size() - 1));
    
  2. # 2 楼答案

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

    private Integer age;
    private String name;
    

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

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