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

Posted

技术标签:

【中文标题】从单个方法返回 ArrayList 和 int 值。可能吗?【英文标题】:Return an ArrayList and int value from a single method. Is it Possible? 【发布时间】:2016-04-05 06:27:51 【问题描述】:

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

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 值?

【问题讨论】:

可以将arraylist和integer封装在一个类中并返回其对象 How to return multiple objects from a Java method?的可能重复 【参考方案1】:

创建包含数组列表和整数的类。 classname name = new classname(); name.integerValue= integerValue; name.arraylist= arraylist; return arraylist;

【讨论】:

【参考方案2】:

是的,您可以创建一个同时包含 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() 来获取学生列表。

【讨论】:

你能用示例代码进一步解释一下吗? 谢谢!真的很有用【参考方案3】:

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

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

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

【讨论】:

【参考方案4】:

一个方法只能返回一件事。

你必须选择:

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

    ArrayListint 包装在某个自定义类中并更改您的方法以返回该类的实例(您也可以使用Object[] 执行此操作,但这会很难看)。

【讨论】:

以上是关于从单个方法返回 ArrayList 和 int 值。可能吗?的主要内容,如果未能解决你的问题,请参考以下文章

util之ArrayList

从调用 Int 的方法返回布尔值

从arraylist返回值到ajax成功函数

非泛型集合

如何创建一个动态返回 ArrayList 的方法?

如何从整数arraylist.ANDROID中删除值[重复]