java:list集合的查找

public void testListContains() {		//方法
		
		course course=coursesToSelect.get(0);//将元素从coursesToSelect中取出放到course中
		System.out.println("取得课程:"+course.name);//name为course的属性
		System.out.println("集合中是否包含此课程:"+course.name+"\n"+coursesToSelect.contains(course));//使用contains方法查看是否有此对象
		
		course course2=new course(course.id, course.name);//另外新建一个不同的course的对象
		System.out.println("新建课程:"+course2.name);
		System.out.println("集合中是否包含此课程:"+course2.name+"\n"+coursesToSelect.contains(course2));
	}


第一个查询返回true

第二个查询返回false

是因为第二个是新建的course对象,并非从元素中取出的。

同时也说明contains方法通过历遍来使用equal方法对比元素。

我们可以通过重写一次equal方法来达到用字符串就能查询课程。

	@Override
	public boolean equals(Object obj) {//将对象传入时是将其转换为Object类传入
		/*判断地址 */
		if(this==obj) {//调用该方法的对象如果内存地址等于传入的对象则返回真。
			return true;
		}
		/*判断传入的对象值是否为空*/
		if(obj==null) {//为空时直接返回假
			return false;
			}
		/*判断传入的对象是否属于Course类型的对象*/
		if(!(obj instanceof Course)) {//如果不属于Course类则返回假
			return false;
		}
		/*当传入对象与调用对象不同地址,
		 * 也不是空值,
		 * 也不属于Course类时则需要将obj强转为Course(从集合中取出时为object类)
		 */
		Course course=(Course) obj;
		
		/*判断对象的属性值是否为空*/
		
		if(this.name==null) {//判断调用对象的name信息是否为空
			if(course.name==null) {//判断传入对象的name信息是否为空
				return true;//都为空则返回真
			}
			else {
				return false;//只有传入的对象name为空则返回假
			}
		}
		else {
			if(this.name.equals(course.name)) {//如果都不为空则对比name的字符串是否一样
				return true;//一样则返回真
			}
			else {
				return false;//否则假
			}
		}
	}
重写之后使用输入的文本查询课程
	public void testListContains() {
		
		Course course=coursesToSelect.get(0);
		System.out.println("查询课程:"+course.name);
		System.out.println("集合中是否包含此课程:"+course.name+"\n"+coursesToSelect.contains(course));
		//根据用户的输入课程名称反馈查询结果
		System.out.println("请输入需要查询的课程名称");
		String name=console.next();
		Course course2=new Course();
		course2.name=name;
		System.out.println("查询课程:"+course2.name);
		System.out.println("集合中是否包含此课程:"+course2.name+"\n"+coursesToSelect.contains(course2));

	}

运行结果:

查询课程:C语言
集合中是否包含此课程:C语言
true
请输入需要查询的课程名称
C语言
查询课程:C语言
集合中是否包含此课程:C语言
true

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值