现在的位置: 首页 > 综合 > 正文

List contains()方法

2018年05月14日 ⁄ 综合 ⁄ 共 1688字 ⁄ 字号 评论关闭

今天用到了List的contains()方法,代码心得如下:

package com.young.test;

import java.util.ArrayList;
import java.util.List;

/**
 * list<E>的 contains方法会调用list中E的equals()方法。
 * 普通类equals()比较的是引用。
 * 而String的equals()比较的是值,因为java对String的equals()方法进行了重写。
 */
public class ListContains {

	public static void main(String[] args) {
		List<Person> pList = new ArrayList<Person>();
		Person pp = new Person();
		for (int i = 0; i < 15; i++) {
			Person p = new Person();
			p.setId(String.valueOf(i));
			p.setName(i + "_name");
			p.setAge(String.valueOf(i + 10));
			if (i == 14) {
				pp = p;//记录最后一个元素,引用传递
			}
			if (i % 2 == 0) {
				p.setSex("男");
			} else {
				p.setSex("女");
			}
			pList.add(p);
		}
		for (Person p1 : pList) {
			System.out.println(p1.getId() + p1.getName() + p1.getSex()
					+ p1.getAge());
		}

		Person p2 = new Person();
		p2.setAge("24");
		p2.setName("14_name");
		p2.setId("14");
		p2.setSex("男");
		/**
		 * 如果不重写Person的equals()方法,那么比较的是引用,结果为不包含;把p2换成pp结果为 包含。
		 */
		if (pList.contains(p2) == true) {
			System.out.print("包含");
	 
		} else {
			System.out.print("不包含");
		}

	}

}

class Person {
	private String id;
	private String name;
	private String age;
	private String sex;

	/**
	 * 重写对象的eqauls()方法。
	 */
	@Override
	public boolean equals(Object obj) {
		System.out.println("Peson equals()方法调用!");
		Person p = (Person) obj;
		/*
		 * String对象 "=="比较的是引用,而String 的equals()方法比较的才是值。
		 * if (p.getId() == this.id && p.getName() == this.name && p.getAge() ==
		 * this.age && p.getSex() == this.sex) {
		 */
		//我们约定只有这四个属性都一样时,这两个对象才相等。
		if (p.getId().equals(this.id) && p.getName().equals(this.name)
				&& p.getAge().equals(this.age) && p.getSex().equals(this.sex)) {
			return true;
		} else {
			return false;
		}
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getAge() {
		return age;
	}

	public void setAge(String age) {
		this.age = age;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

}

抱歉!评论已关闭.