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;
}
}