实现的功能有
1、查找内容 2、修改内容 3、删除内容 4、增加内容 5、打印内容 6、按学号排序 7、按分数排序
用Comparator比较器实现两种属性的排序,代码拙劣仅供参考。
(ps:为方便运行编译均放在同一个MyList1类中)
import java.util.*;
class Idcomparator implements Comparator<MyList1>//按学号排名,从小到大
{
public int compare(MyList1 o1, MyList1 o2)
{
if (o1.id<o2.id)
{
return -1;
}
else
{
return 1;
}
}
}
class Namecomparator implements Comparator<MyList1>//按成绩排名,从大到小
{
public int compare(MyList1 o1, MyList1 o2) {
if (o1.score<o2.score)
{
return 1;
}
else
{
return -1;
}
}
}
public class MyList1 extends ArrayList
{
String name;
int id;
double score;
public MyList1(String name, int id, double score)
{
this.name = name;
this.id = id ;
this.score = score;
}
public String toString()
{
return "姓名:"+name+" 学号: "+id+" 分数:"+score;
}
public static void main(String []args)
{
ArrayList<MyList1> mylist1=new ArrayList<MyList1>();
System.out.println();
mylist1.add(new MyList1("张三",15,2000));
mylist1.add(new MyList1("李四",18,3000));
mylist1.add(new MyList1("王五",16,2500));
mylist1.add(new MyList1("孙六",17,2100));
System.out.println("全部信息如下:");
for (int i=0;i<mylist1.size();i++)
{
System.out.println(mylist1.get(i));
}
Scanner sc=new Scanner(System.in);
String str1="y";
while (str1.equals("y")||str1.equals("Y"))
{
System.out.println("请选择你要执行的操作:");
System.out.println("1、查找内容");
System.out.println("2、修改内容");
System.out.println("3、删除内容");
System.out.println("4、增加内容");
System.out.println("5、打印内容");
System.out.println("6、按学号排序");
System.out.println("7、按分数排序");
int a=sc.nextInt();
switch(a)//建立一个菜单进行功能选择
{
case 1://查找内容,按照名字查找
System.out.println(" 请输入你要查找信息的名字");
String str=sc.next();
int c=1;
for (int i=0;i<mylist1.size();i++)
{
if (str.equals(mylist1.get(i).name))
{
System.out.println("为您匹配到的信息:"+mylist1.get(i));
c=2;
}
}
if (c==1)
{
System.out.println("sorry!没有匹配到相关信息");
}
break;
case 2://修改内容
System.out.println("请输入你要修改信息的下标,第一位为0");
int b =sc.nextInt();
System.out.println("你要修改的目标信息为:"+mylist1.get(b));
System.out.println("请输入你要修改信息的名字");
String b1=sc.next();
System.out.println("请输入你要修改信息的id");
int b2=sc.nextInt();
System.out.println("请输入你要修改信息的成绩");
double b3=sc.nextDouble();
mylist1.set(b,new MyList1(b1,b2,b3));
System.out.println("修改后的内容如下");
for (int i=0;i<mylist1.size();i++)
{
System.out.println(mylist1.get(i));
}
break;
case 3://删除内容,删除指定下标的内容
System.out.println("请输入你要删除信息的下标,第一位为0");
int d=sc.nextInt();
System.out.println("你要删除的目标信息为:"+mylist1.get(d));
mylist1.remove(d);
System.out.println("删除成功");
System.out.println("删除后的内容如下");
for (int i=0;i<mylist1.size();i++)
{
System.out.println(mylist1.get(i));
}
break;
case 4://增加内容,指定位置下标添加
System.out.println("请输入你要添加信息的下标,第一位为0");
int e=sc.nextInt();
System.out.println("请输入你要添加信息的名字");
String e1=sc.next();
System.out.println("请输入你要添加信息的id");
int e2=sc.nextInt();
System.out.println("请输入你要添加信息的成绩");
double e3=sc.nextDouble();
mylist1.add(e,new MyList1(e1,e2,e3));
System.out.println("添加后的内容如下");
for (int i=0;i<mylist1.size();i++)
{
System.out.println(mylist1.get(i));
}
break;
case 5://打印内容
for (int i=0;i<mylist1.size();i++)
{
System.out.println(mylist1.get(i));
}
break;
case 6://按学号排名,从小到大
Collections.sort(mylist1,new Idcomparator());
for (int i=0;i<mylist1.size();i++)
{
System.out.println(mylist1.get(i));
}
break;
case 7://按成绩排名,从大到小
Collections.sort(mylist1,new Namecomparator());
for (int i=0;i<mylist1.size();i++)
{
System.out.println(mylist1.get(i));
}
break;
}
System.out.println("是否对信息进行操作y/n");
str1=sc.next();
if (str1.equals("n")||str1.equals("N"))
{
break;
}
}
}
}
注:以上代码均来自实际编写,如有问题请留言,转载请注明出处。