Set接口实现

Set接口有两个实现类,一个是HashSet和TreeSet。
HashSet实现Set
HashSet类有一个子类linkedHashSet,它不仅仅实现哈希算法,而且采用了链表结构。
package org.lanqiao;

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

public class TestSet {
public static void main(String[] args) {
Set nameSet = new HashSet();//多态,因为Set是接口,所以创建对象时选用多态
//添加元素
nameSet.add(“王云”);
nameSet.add(“张三”);
nameSet.add(“站徐珏”);
nameSet.add(“寒轩”);
nameSet.add(“玉兰”);
System.out.println(nameSet.size());//返回集合的长度
System.out.println(nameSet.isEmpty());//判断集合是否为空
System.out.println(nameSet.contains(“hanxuan”));//判断集合中是否含有该元素
System.out.println(“再次添加王云是否成功:”+ nameSet.add(“王云”));//判断Set是否可以添加相同的元素
System.out.println(nameSet.remove(“王云”));//删除集合中的元素,如果删除成功就返回true

}

}

TreeHash实现Set
TreeHash不仅仅实现Set接口的同时,也实现了SortedSet接口,是一个具有排序功能的Set的接口类。
1、TreeSet集合中元素是按升序排列,默认是按自然升序排列,也就是说TreeSet集合中的对象需要实现Comparable接口。
2、Comparable接口
如果我们想自己定义自己的排序方式,就是让加入TreeSet集合中的对象所属的类实现Comparable接口,通过实现compareTo(Object o)方法来达到排序目的。
代码如下:
package org.lanqiao;

class Student implements Comparable{
int num = -1;
String name = “”;
Student(int num, String name) {
this.num = num;
this.name = name;
}
@Override
public String toString() {
return “Student [num=” + num + “, name=” + name + “]”;
}
@Override
//此学生对象的学号和指定的学生对象的学号比较
//此学生的学号大与指定的学生对象的学号,那么res等于1,等于0,小于就-1
public int compareTo(Object o) {
Student stu1 = (Student)o;
int res = num > stu1.num ? 1 : (num == stu1.num ?0:-1);
if(res == 0) {
res = name.compareTo(stu1.name);
}
return res;
}

}

package org.lanqiao;

import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
public class TestSet{
public static void main(String[] args) {
Set stu = new TreeSet();
stu.add(new Student( 1 ,“wangyun” ));
stu.add(new Student(7 ,“zhangsan”));
stu.add(new Student(8, “zhangxiaoxiao”));
stu.add(new Student(6,“xiaolan”));
Iterator it = stu.iterator();
while(it.hasNext()) {
System.out.println(it.next());

	}
	
	
	
	
}

}

发布了7 篇原创文章 · 获赞 0 · 访问量 59

猜你喜欢

转载自blog.csdn.net/qq_45800270/article/details/103218784