关闭

集合第二发Set接口

标签: 集合Set接口
103人阅读 评论(0) 收藏 举报
分类:

Set接口

Set接口不允许重复项,用的都是collection的方法,没有引入新方法。

我们主要用的set的实现类是HashSet和TreeSet(用来排序的)。

Set一定要采用迭代器(Iterator),添加对象就会去调对象的hashCode方法,所以被添加的对象中一定要写hashCode方法。

通过一个演示代码来理解Set:

主类:

package cn.hncu.set;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class SetDemo {
	public static void main(String[] args) {
		Set set=new HashSet();
		Person p1=new Person("01", "张三", 20);
		Person p2=new Person("02", "李四", 21);
		Person p3=new Person("03", "王五", 22);
		Person p4=new Person("04", "mis", 17);
		set.add(p1);
		set.add(p2);
		set.add(p3);
		set.add(2.14);
		set.add(new Integer(50));
		set.remove(p2);
		
		Object[] objs=set.toArray();
		set.clear();
		for (int i = 0; i < objs.length; i++) {
			if(objs[i].equals(p3)){
				objs[i]=p4;
			}
			set.add(objs[i]);
		}
		
		Iterator it=set.iterator();
		
		while(it.hasNext()){
			Object obj=it.next();
			if(obj instanceof String){
				System.out.println("string:"+obj);
			}else
			if(obj instanceof Person){
				System.out.println("Person:"+obj);
			}else
			if(obj instanceof Integer){
				System.out.println("Integer:"+obj);
			}else
			if(obj instanceof Double){
				System.out.println("Double:"+obj);
			}
		}
		
		
	}

}
Person类:

package cn.hncu.set;

public class Person {
	private String Sno;
	private String name;
	private int age;
	public Person(String sno, String name, int age) {
		super();
		Sno = sno;
		this.name = name;
		this.age = age;
	}
	public String getSno() {
		return Sno;
	}
	public void setSno(String sno) {
		Sno = sno;
	}
	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 String toString() {
		return "Person [Sno=" + Sno + ", name=" + name + ", age=" + age + "]";
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((Sno == null) ? 0 : Sno.hashCode());
		result = prime * result + age;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Person other = (Person) obj;
		if (Sno == null) {
			if (other.Sno != null)
				return false;
		} else if (!Sno.equals(other.Sno))
			return false;
		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;
	}
	
}



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:48894次
    • 积分:1476
    • 等级:
    • 排名:千里之外
    • 原创:99篇
    • 转载:1篇
    • 译文:0篇
    • 评论:4条
    最新评论