【问题标题】:Return an ArrayList and int value from a single method. Is it Possible?从单个方法返回 ArrayList 和 int 值。可能吗?
【发布时间】: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 值?

【问题讨论】:

标签: java arraylist methods return


【解决方案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】:

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

      你必须选择:

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

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

      【讨论】:

        猜你喜欢
        • 2014-11-17
        • 1970-01-01
        • 1970-01-01
        • 2014-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-27
        • 1970-01-01
        相关资源
        最近更新 更多