从单个方法返回ArrayList和int值。可能吗?

时间:2015-12-31 08:58:16

标签: java arraylist methods return

我正在完成我的课程并想出了这种情况。这是我的代码。

public static ArrayList<Student> checkPresent(String unitID, String week){
    int present = 0;
    ArrayList<Student> studentDetails = Student.getStudentDetails();

    ArrayList<AttendanceLog> pickedList = AttendanceLog.pickFromAttendanceLog(unitID, week);

    for(Student student : studentDetails){
        student.setPresent("N");
        for(AttendanceLog attendance : pickedList){
            if(student.getStudentNo().equals(attendance.getStudentID())){
                student.setPresent("Y");
                present++;
            }

        }
    }

    return studentDetails;

}

我只返回ArrayList,但我也希望得到整数值present。可能吗?或者我如何获取int值?

4 个答案:

答案 0 :(得分:3)

是的,您可以创建一个同时包含ArrayList和整数

的类
class SomeClass{
ArrayList<Student> aList;
int present;
}

让你的方法返回这个类的实例

更新:

public static SomeClass checkPresent(String unitID, String week){

int present = 0;
ArrayList<Student> studentDetails = Student.getStudentDetails();

ArrayList<AttendanceLog> pickedList = AttendanceLog.pickFromAttendanceLog(unitID, week);

for(Student student : studentDetails){
    student.setPresent("N");
    for(AttendanceLog attendance : pickedList){
        if(student.getStudentNo().equals(attendance.getStudentID())){
            student.setPresent("Y");
            present++;
        }

    }
}
SomeClass someCls = new SomeClass();
someCls.present = present;
someCls.aList = studentDetails;
return someCls;

}

请注意,在您的示例中,您将静态获取studentDetails,因此以这种方式编写代码是没有意义的,因为您始终可以通过调用Student.getStudentDetails()获取学生列表。

答案 1 :(得分:3)

您只能从方法中返回一件事。

你必须选择:

  1. 将ArrayList作为参数传递给方法。调用者将实例化ArrayList,并且该方法将填充它。然后,除了int之外,您的方法还可以返回您希望返回的ArrayList

  2. ArrayListint换成某个自定义类并更改您的方法以返回该类的实例(您也可以使用Object[]执行此操作,但是会很难看。

答案 2 :(得分:1)

创建类arling the arraylist和整数。 classname name = new classname(); name.integerValue= integerValue; name.arraylist= arraylist; return arraylist;

答案 3 :(得分:0)

我喜欢创建一个将ArrayList和int作为成员的新类型。

class Result {
    public final int value;
    public final List<> list;

    public Result(int val, List<> list) {
        this.value = val;
        this.list = list;
}