2014-12-05 4 views
1

옵션 2와 3에서 특정 데이터 유형 (예 : 문자열 성 또는 이중 gpa)에 대해 직렬화 된 arraylist를 참조하고이를 비교하는 방법에 대한 단서가 없습니다. 실험실 시트에서 우리는 다른 모든 일을하는 방법에 대한 지시를 받았지만, 옵션 2와 3을 사용하면 말 그대로 "이해할 수있다"고 말했고, 교수는 결코 수업에 대해 설명하지 못했습니다. 그래서 나는 누군가 그것을 나에게 설명 할 수 있기를 바라고있다.직렬화 된 arraylist에서 특정 객체를 선택하는 방법은 무엇입니까?

편집 :

내 대학에서 어떤 학생 ID 번호라고 901 번호는 것은 여기 내 학생 클래스의 다음

import java.io.Serializable; 
public class Student implements Serializable 
{ 
    private String lastName, firstName; 
    private double gpa; 
    private int studentID, gradYear; 
    public Student(int studentID, String lastName, String firstName, double gpa, int gradYear) 
    { 
     this.studentID = studentID; 
     this.lastName = lastName; 
     this.firstName = firstName; 
     this.gpa = gpa; 
     this.gradYear = gradYear; 
    } 
    public int getStudentID() 
    { 
     return studentID; 
    } 
    public String getLastName() 
    { 
     return lastName; 
    } 
    public String getFirstName() 
    { 
     return firstName; 
    } 
    public double getGPA() 
    { 
     return gpa; 
    } 
    public int getGradYear() 
    { 
     return gradYear; 
    } 
    public String toString() 
    { 
     return "Student ID: " + studentID + " Name: " + lastName.trim() + ", " + firstName.trim() + " GPA: " + gpa + " Grad year: " + gradYear; 
    } 
} 

내가 도움이 필요 테스트 클래스 (모든 것이 그 안에 괜찮을 것)

import java.util.*; 
import java.io.*; 
public class StudentTestOS 
{ 
    public static void main(String[] args) throws IOException, ClassNotFoundException 
    { 
     boolean done = false; 
     ArrayList<Student> sList = new ArrayList<Student>(); 
     File sFile = new File("studentOS.dat"); 
     if(sFile.exists()) 
     { 
      FileInputStream myFIS = new FileInputStream(sFile); 
      ObjectInputStream sIn = new ObjectInputStream(myFIS); 
      sList = (ArrayList<Student>)sIn.readObject(); 
      sIn.close(); 
     }  
     System.out.println("Students on file: "); 
     for(int i = 0; i < sList.size(); i++) 
      System.out.println(sList.get(i).toString()); 
     do 
     { 
     Scanner myScanner = new Scanner(System.in);   
     while (!done) 
     { 
      System.out.println("1 - add a student"); 
      System.out.println("2 - display student info"); 
      System.out.println("3 - display student info given their last name"); 
      System.out.println("4 - exit"); 
      int choice = Integer.parseInt(myScanner.nextLine()); 
      if (choice == 1) 
      { 
       System.out.print("Enter 901 number: "); 
       int studentID = Integer.parseInt(myScanner.nextLine()); 
       System.out.print("Enter last name: "); 
       String lastName = myScanner.nextLine(); 
       System.out.print("Enter first name: "); 
       String firstName = myScanner.nextLine(); 
       System.out.print("Enter gpa: "); 
       double gpa = Double.parseDouble(myScanner.nextLine()); 
       System.out.print("Enter grad year: "); 
       int gradYear = Integer.parseInt(myScanner.nextLine()); 
       Student myStudent = new Student(studentID, lastName, firstName, gpa, gradYear); 
       sList.add(myStudent); 
      } 
      else if (choice == 2) 
      { 
       System.out.print("Enter 901 number: "); 
       int studentID = Integer.parseInt(myScanner.nextLine()); 
      } 
      else if (choice == 3) 
      { 
       System.out.println("Enter last name: "); 
       String lastName = myScanner.nextLine(); 
      } 
      else if (choice == 4) 
      { 
       done = true; 
      } 
      else 
       System.out.println("Invalid menu choice!"); 
     } 
     System.out.println("Goodbye!"); 
    }while(!done); 
    FileOutputStream myFOS = new FileOutputStream(sFile); 
    ObjectOutputStream sOut = new ObjectOutputStream(myFOS); 
    sOut.writeObject(sList); 
    sOut.close(); 
} 
} 

답변

0

당신은 루프를 가지고 fo를 (지정된 속성에 의해 객체에게 이드를 비교할 수 있습니다 (2 & 3 가지 옵션 밖에서 나는 모든 일을 생각) 선택 2에 대한 선택 2와 성).

선택 3
System.out.print("Enter 901 number: "); 
int studentID = Integer.parseInt(myScanner.nextLine()); 
for(Student student : sList){ 
    if(student.getStudentID == studentId){ 
    System.out.println(student); 
    break; // As student Id is unique.So, once we found the student no need to loop further. 
    } 
} 

,이 lastName에 비교하고 같은과 lastName 많은있을 수 break 문을 넣지 마십시오 : - 선택 2의

.

관련 문제