您的位置:首页 > 其它

集合框架二(Set接口)

2016-07-19 18:45 260 查看
package us.google.com;

public class Person {

private String name;

private int age;

public Person(String name, int age) {

super();

this.name = name;

this.age = age;

}

public Person() {

super();

}

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 [name=” + name + “, 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());

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 (age != other.age)

return false;

if (name == null) {

if (other.name != null)

return false;

} else if (!name.equals(other.name))

return false;

return true;

}

}

package us.google.com;

public class Student {

private String name;

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

public Student() {
super();
// TODO Auto-generated constructor stub
}

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 "Student [name=" + name + ", age=" + age + "]";
}


}

package us.google.com;

public class Empl implements Comparable{

private String name;

private int age;

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

public Empl() {
super();
// TODO Auto-generated constructor stub
}

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 "Empl [name=" + name + ", age=" + age + "]";
}

@Override
public int compareTo(Empl o) {
if(o==null)
{
throw new NullPointerException("参数不能为空");
}
if (this.age>o.age) {
return 1;
}
if(this.age<o.age)
{
return -1;
}
return 0;
}


}

package us.google.com;

import java.util.HashSet;

import java.util.LinkedHashSet;

import java.util.Set;

import java.util.TreeSet;

/**

* Set接口

* 1、不允许重复元素

* @author chongrubujing

*

*/

public class SetDemo {

/**

* HashSet实现类

* 1、不保证迭代顺序

* 2、底层使用HashMap实现(哈希表)

* 3、自定义对象是否重复的判断条件是:先判断hashCode是否相等,如果hashCode不相等,那么一定不是同一个对象

* 如果hashCode相等,那么久需要equals方法进一步判断,如果equals返回true则为同一个对象。否则不是

* 同一个对象。

*/

public static void hashset()

{

//创建一个HashSet对象

Set set = new HashSet();

set.add(“空空”);

set.add(“兰兰”);

set.add(“爱爱”);

set.add(“苍苍”);

System.out.println(“元素的个数是:”+set.size());

//把集合转换成数组(匿名对象注意别忘了{})

String[] names = set.toArray(new String[]{});

for (String s: names) {

System.out.println(s);

}

System.out.println(“—————————”);

//存储自定义对象

//创建HashSet对象

Set persons = new HashSet();

persons.add(new Person(“空空”,18));

persons.add(new Person(“兰兰”,18));

persons.add(new Person(“爱爱”,18));

persons.add(new Person(“苍苍”,18));

persons.add(new Person(“空空”,30));

System.out.println(“元素一共有:”+persons.size());

}

/**
* TreeSet实现类
* 1、使用元素的自然顺序对元素进行排序
* 2、底层使用TreeMap实现(树形结构)
* 3、在TreeSet集合中,存储自定义对象时,该对象必须实现Comparable/Comparator接口
*/
public static void treeset()
{
Set<String> set = new TreeSet<String>();
set.add("空空");
set.add("兰兰");
set.add("苍苍");
set.add("爱爱");
System.out.println("元素个数:"+set.size());
String[] names = set.toArray(new String[]{});
for (String s : names) {
System.out.println(s);
}
System.out.println("添加自定义对象");
Set<Empl> set1 = new TreeSet<Empl>();
set1.add(new Empl("空空",30));
set1.add(new Empl("兰兰",31));
set1.add(new Empl("苍苍",32));
set1.add(new Empl("爱爱",33));
set1.add(new Empl("利亚",28));
System.out.println("个数为:"+set1.size());

}
/**
* LinkedHashSet类
* 1、使用哈希表+双向链表实现
* 2、会以插入的顺序输出
* 3、底层是使用LinkedHashMap实现
* 4、是HashSet的子类
*/
public static void linkedhashset()
{
Set<Student> set2 = new LinkedHashSet<Student>();
Student s1  = new Student("小白");
Student s2  = new Student("小黑");
Student s3  = new Student("小红");
Student s4  = new Student("小蓝");
set2.add(s1);
set2.add(s2);
set2.add(s3);
set2.add(s4);
set2.add(new Student("小绿"));
System.out.println(set2);

}
public static void main(String[] args) {
hashset();
treeset();
linkedhashset();
}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: