集合第二发Set接口

来源:互联网 发布:java jdk 1.7 中文 编辑:程序博客网 时间:2024/05/18 00:48

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);}elseif(obj instanceof Person){System.out.println("Person:"+obj);}elseif(obj instanceof Integer){System.out.println("Integer:"+obj);}elseif(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;}@Overridepublic String toString() {return "Person [Sno=" + Sno + ", name=" + name + ", age=" + age + "]";}@Overridepublic 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;}@Overridepublic 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
原创粉丝点击