import java.util.HashSet;
import java.util.Set;
public class HashDemo {
public static void main(String[] args) {
/**
*set的特点:
*
* 无序性
* 不能重复
* 允许有空值,只能有一个
* 不是线程安全的
* 底层是map 和list不一样,不会抛出异常
*
* 增强的for循环不仅能对集合做遍历,也能对数组做遍历
*/
/**
* set在添加元素的时候,会拿这个元素和每一个元素作比较,重复就不添加,不重复就添加
* 会自动调用equal方法,如果是new了一个对象,我们看着相等的时候需要重写equal方法
* 那个时候需要判断hash码相等,&&地址相等||equal相等
* 但是new的对象地址显然不能相等,所以就该在hash这里动手,重写hash,让它永远返回
* 一个确切的数字。比如1,这样所有的hash值肯定相等,就OK啦
*/
Set<String> set = new HashSet<String>();
set.add("宋江");
set.add("晁盖");
set.add("曹操");
set.add("曹操");
set.add(null);
set.add(null);
System.out.println(set);
}
}
import java.util.LinkedHashSet;
import java.util.Set;
public class LinkedHashSetDemo {
public static void main(String[] args) {
Set<String> set = new LinkedHashSet<String>();
/**
*
* 有序性 按照添加顺序
* 不能重复
* 允许有空值,只能有一个
* 不是线程安全的
*/
}
}
import java.util.Set;
import java.util.TreeSet;
public class TreeSetdemo {
public static void main(String[] args) {
/**
* 自然排序
* 调用compareto方法 而且要实现compareble接口,按照自己的需求重写compareto
* 而且是升序排列的
*/
Set<String> set = new TreeSet<String>();
}
}