containsはequalsメソッドに依存してスタックが先進的であることを検証する

3406 ワード



import java.util.ArrayList;

/*
 *              。
 *   :                      ,            。
 * 
 *     ,               ,      ?
 *     ,        contains  。
 *     ,       contains     ,          。
 *           ,  contains       equals  。
 *         equals    Object 。         。
 *        new   ,         。           。        。
 *   ,      ?
 *        ,              ,         。         equals      。
 * 
 *             :contains    equals  。
 *     ,            ,       JDK                 ,  ,         。           。
 */
public class ArrayListDemo {
	public static void main(String[] args) {
		//       
		ArrayList<Student> arrayList = new ArrayList<>();

		//       
		Student s1 = new Student("  ", 18);
		Student s2 = new Student("  ", 27);
		Student s3 = new Student("  ", 20);
		Student s4 = new Student("   ", 22);
		Student s5 = new Student("  ", 27);
		Student s6 = new Student("  ", 17);
		Student s7 = new Student("  ", 27);

		arrayList.add(s1);
		arrayList.add(s2);
		arrayList.add(s3);
		arrayList.add(s4);
		arrayList.add(s5);
		arrayList.add(s6);
		arrayList.add(s7);
	 
		//          
		ArrayList<Student> arrayTemp = new ArrayList<Student>();
		//      
		for (Student s : arrayList) {
			//   s   arr   ,   ,    ,    ,   。
			if (!arrayTemp.contains(s)) {
				arrayTemp.add(s);
			}
		}

		//     
		for (Student s : arrayTemp) {
			System.out.println(s.getName() + "---" + s.getAge());
		}
	}
}
<pre name="code" class="java">

public class Student {
	private String name;
	private int age;

	public Student() {
		super();
	}

	public Student(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}

	public String getName() {
		return name;
	}

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

	public int getAge() {
		return age;
	}

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

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + age;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		System.out.println("-----------");
		return result;
	}

	@Override
	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 (age != other.age)
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		return true;
	}


}
 
  
 


import java.util.Stack;

/*
* Stack:    API,         Vector。
* class Stack<E> extends Vector<E> 
*   ,                   。
 *     API,               ,         :      。 */
public class StackDemo {
	public static void main(String[] args) {
		//       
		Stack<String> stack = new Stack<>();

		//        
		stack.add("hello");
		stack.add("world");
		stack.add("java");

		//     
		for (String str : stack) {
			System.out.println(str);
		}
		System.out.println("----------------");


		while (!stack.isEmpty()) {
			String string = stack.pop();
			System.out.println(string);
		}
		//         
		// java
		// world
		// hello
	}
}