Java集合框架 - Set的实现类
Set中不能放置重复的对象,其原因是没有角标(当取数据或者删除数据时,代码不知道应该访问哪个对象)。
Set中,没有求长和替换。Set中的值要么全部拿出来,要么都不要拿出来。
1)HashSet<E> ()
利用散列哈希算法,将Set中的值进行排列起来。在外部表现出来是无序的,其内部是用散列哈希算法将值排列起来。遍历可用foreach循环(底层也是迭代器)、或者迭代器。
2)LinkedHashSet<> ()
用链表实现,其顺序是往里放进去的顺序。
import java.util.*;
public class Demo {
public static void main(String[] args) {
Set<String> set = new LinkedHashSet<>();
set.add("shi");
set.add("han");
set.add("lu");
set.add("wang");
set.add("yang");
for(String str : set) {
System.out.println(str +" ");
}
}
}
"C:\Program Files\Java\jdk1.8.0_172\bin\java.exe" ...
shi
han
lu
wang
yang
Process finished with exit code 0
3)TreeSet<> ()
往TreeSet中放置元素,其中的元素要实现Comparable接口,否则会报错。往里放置元素的时候,就会顺便排好序。
按照顺序字典排序,升序排序。底层是一个平衡二叉树(当有一边的深度比另一边大于2时,就会旋转树,往深度低的一边旋转)(只要大于2就会旋转)。
import java.util.*;
public class Demo {
public static void main(String[] args) {
Set<String> set = new TreeSet<>();
set.add("shi");
set.add("han");
set.add("lu");
set.add("wang");
set.add("a");
set.add("yang");
for(String str : set) {
System.out.println(str +" ");
}
}
}
"C:\Program Files\Java\jdk1.8.0_172\bin\java.exe" ...
a
han
lu
shi
wang
yang
Process finished with exit code 0
上述中介绍,便是Set接口中的三个实现类。