java用list实现对象数组的增删改查

实现的功能有
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;
		}	
		}
	}	
}

注:以上代码均来自实际编写,如有问题请留言,转载请注明出处。

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值