JAvaオブジェクト配列の削除、比較器の2つの使用方法

47088 ワード

         
      
Student.java
import java.util.Arrays;
import java.util.Scanner;

public class Student extends MyComparator implements Comparable<Student>
{
	int id;
	String name;
	String sex;
	int age;
	double score;

	Student()
	{	
	}
	public Student(int id, String name, String sex, int age ,double score) {
		super();
		this.id = id;
		this.name = name;
		this.sex = sex;
		this.age=age;
		this.score = score;
	}   
	@Override
	public String toString() {
		return "id:" + id + ",   :" + name + ",   :" + sex + " ,   : " + age +  ",   " + score;
	}

	public void print(Student arr[])
	{ 
 		for(Student i:arr)
		{
			System.out.println(i);	
		}	
	}
	public Student[] add(Student arr[])
    {
		int count =arr.length;
	 Scanner sc=new Scanner(System.in);
	 Student stu=new Student();
	 System.out.println("     id:");
	 stu.id=sc.nextInt();
	 System.out.println("       :");
	 stu.name=sc.next();
	 System.out.println("       :");
	 stu.sex=sc.next();
	 System.out.println("       :");
	 stu.age=sc.nextInt();
	 System.out.println("       :");
	 stu.score=sc.nextDouble();
   	 if(count>=arr.length)
   	 {
   		 Student []arr1=Arrays.copyOf(arr, (arr.length+1));
   		 arr=arr1;//             ,    +1
   	 }
   	 arr[count]=stu;
	return arr;
    } 
    public static Student[] delete(Student arr[],int id)
    {
   	 for(int i=0;i<arr.length;i++)
   	 {
   		 if((arr[i].id)==(id))
   		 {
   			 for(int j=i;j<arr.length-1;j++)
   			 {
   				 arr[j]=arr[j+1];
   			 }
   			 Student []arr1=Arrays.copyOf(arr, arr.length-1);
   			 return arr1;
   		 }  
   	 }
		return arr;	 	 
    }
   
    public static Student[] set(Student arr[],int id)
    {
     Scanner sc=new Scanner(System.in);
     boolean y=true;
   	 for(int i=0;i<arr.length;i++)
   	 {
   		if((arr[i].id)==(id))
  		 {
   			y=false;
   		 System.out.println("          
1-id
2-
3-
4-
5- "
); int p=sc.nextInt(); switch(p) { case 1: System.out.println(" id:"); arr[i].id=sc.nextInt(); break; case 2: System.out.println(" :"); arr[i].name=sc.next(); break; case 3: System.out.println(" :"); arr[i].sex=sc.next(); break; case 4: System.out.println(" :"); arr[i].age=sc.nextInt(); break; case 5: System.out.println(" :"); arr[i].score=sc.nextDouble(); break; } } } if(y==true) { System.out.println(" "); } return arr; } public static void get(Student arr[],String str) { boolean y=true; for(int i=0;i<arr.length;i++) { if(arr[i].name.equals(str)||(str.valueOf(arr[i].id).equals(str))) { y=false; System.out.println(arr[i]); } } if(y==true) { System.out.println(" "); } } public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Student other = (Student) obj; if (id != other.id) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; } public int compareTo(Student s) { if(this.id>s.id) { return 1; } if(this.id<s.id) { return -1; } return 0; } } Test.java import java.util.Arrays; import java.util.Scanner; public class Test { public static void main(String[] args) { Student []arr= { new Student(3," "," ",25,99.0), new Student(4," "," ",25,90.0), new Student(2," "," ",26,66.0), new Student(1," "," ",24,88.0) }; Student stu=new Student(); while(true) { System.out.println("" + "1- " + "
2- "
+ "
3- "
+ "
4- "
+ "
5- "
+ "
6- id "
+ "
7- "
+ "
"
); Scanner sc=new Scanner(System.in); int i=sc.nextInt(); switch(i) { case 1: stu.print(arr); break; case 2: arr=stu.add(arr); stu.print(arr); break; case 3: System.out.println(" id"); int j=sc.nextInt(); arr=Student.delete(arr, j); stu.print(arr); break; case 4: System.out.println(" id"); int k=sc.nextInt(); arr=Student.set(arr, k); stu.print(arr); break; case 5: System.out.println(" id "); String str=sc.next(); Student.get(arr,str); break; case 6: Arrays.sort(arr); stu.print(arr); break; case 7: Arrays.sort(arr,new MyComparator()); stu.print(arr); break; } System.out.println(" "); String str=sc.next(); char a=str.charAt(0); if(a=='n'||a=='N') { break; } } } } MyComparator.java import java.util.Comparator; public class MyComparator implements Comparator<Student> { public int compare(Student stu1, Student stu2) { if(stu1.sex.hashCode()>stu2.sex.hashCode()) { return -1; } if(stu1.sex.hashCode()<stu2.sex.hashCode()) { return 1; } return 0; } }