如何从arraylist元素中获取特定变量?

时间:2017-03-02 19:34:10

标签: java arraylist

我有一个arraylist,在一个类中我有实例变量以及get和set方法。在另一个类中,我已经将arraylist初始化为如下所示,并且还添加了一些元素。

private ArrayList<Student> students;

    public StudentCollection() {
        students = new ArrayList<Student>();
        students.add(new Student("Tom", 10));
        students.add(new Student("Dick", 11));
        students.add(new Student("Harry", 12));
    }

我想从三个元素中的每一个返回第二个变量(例如10,11,12的整数),以便我可以在我的界面中使用它们。我该怎么做

3 个答案:

答案 0 :(得分:0)

您需要迭代地从学生中提取数字,例如

int[] ids = new int[students.size()];
for (int i = 0; i < students.size(); i++) {
  ids[i] = students.get(i).getID();
}
return ids;

答案 1 :(得分:0)

您可以使用Java 8的功能流映射来获取给定属性的所有值。

我写了一个通用方法,以便更容易调用。

集电极

import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;

public class Collector {
    public static void main(String[] args) {
        List<Student> students = new ArrayList<Student>();

        students.add(new Student("Tom", 10));
        students.add(new Student("Dick", 11));
        students.add(new Student("Harry", 12));

        List<Integer> grades = valueGrabber(students, s -> s.getGrade());

        System.out.println(grades); // [10, 11, 12]
    }

    private static <C, T> List<T> valueGrabber(List<C> items, Function<C, T> func) {
        return items.stream().map(func).collect(Collectors.toList());
    }
}

学生

public class Student {
    private String name;
    private int grade;

    public String getName() { return name; }
    public int getGrade() { return grade; }

    public Student(String name, int grade) {
        this.name = name;
        this.grade = grade;
    }
}

答案 2 :(得分:0)

  

我想从三个元素中的每一个返回第二个变量(例如10,11,12的整数),以便我可以在我的界面中使用它们。我该怎么做

从arraylist中获取特定元素

students.get(2);  //returns 3rd Student element
  

我昨天已经尝试过了。但是当我尝试打印它时,我在eclipse控制台中遇到的错误就像“[Ljava.lang.String; @ 36dfb101”

您一直在尝试直接打印String数组。不要打印整个数组,而是:

System.out.println(Arrays.toString(stringArray));  //to print entire array

System.out.println(stringArray[x]);  //where x is index of an element to be printed

从arraylist的元素中获取特定属性

students.get(2).getName();  //returns 3rd Student's name
students.get(2).getAge();   //returns 3rd Student's age

如果直接打印您的Student对象,将隐式调用toString(),这将为您提供className + "@" + hashCode

如果要直接打印Student对象,并且希望更改类的String表示形式,可以覆盖toString()方法:

//E.g. Print student's name when printing the object directly
class Student{
    //class members & constructors
    @Override
    public String toString(){
        return getName();
    }
}