我有一个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的整数),以便我可以在我的界面中使用它们。我该怎么做
答案 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();
}
}