package Andy.com.set;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.TreeSet;
/**
* Set接口
* 1、不允许有重复的元素
* @author Administrator
*
*/
public class SetDemo {
/*
* LinkedHashSet的实现类
* 1、使用哈希表和双向链表实现
* 2、会与插入的顺序输出
* 3、底层使用LinkedHashMap实现
* 4、是HashSet的子类
*/
public static void linkedhashset()
{
Set<Student> students=new LinkedHashSet<Student>();
Student s1=new Student("小小",20);
Student s2=new Student("笑笑",21);
Student s3=new Student("晓晓",22);
students.add(s1);
students.add(s2);
students.add(s3);
System.out.println(students+"\n");
}
/**
* 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("奥迪");
set.add("啊");
System.out.println("emu :"+set.size());
String[] names=set.toArray(new String[]{});
for(String s:names)
{
System.out.println(s);
}
/**
* 自定义
*
*/
System.out.println("---------treeset自定义对象--------");
Set<Emp> emps=new TreeSet<Emp>();
Emp e1=new Emp("lang",20);
Emp e2=new Emp("lan",22);
Emp e3=new Emp("la",25);
Emp e4=new Emp("l",23);
emps.add(e1);
emps.add(e2);
emps.add(e3);
emps.add(e4);
System.out.println("emu:"+emps.size());
System.out.println(emps);
}
/*
* HashSet实现类
* 1、不保证迭代顺序
* 2、底层使用HashMap实现,HashMap(哈希表)的初始容量是16,加载因子为0.75。
* 加载因子:当容量使用0.75时,扩充容量
* 3、自定义对象是否重复的判断条件:如果hashCode不同,一定不是同一个对
* 像,如果不同不一定是同一对象,则判断equles();
*/
public static void hashset()
{
Set<String> set=new HashSet<String>();
set.add("小浪");
set.add("小璇");
set.add("小青");
set.add("小鹏");
System.out.println("Set contain hom meany emu:"+set.size());
//把集合转换成数组
//object[] objs=set.toArray();
String[] names=set.toArray(new String[]{});
for(String s:names)
{
System.out.println(s);
}
System.out.println("--------------hashset自定义对象--------------------");
//
Set<Person> persons=new HashSet<Person>();
Person p1=new Person("小浪",24);
Person p2=new Person("小啊",23);
Person p3=new Person("小白",22);
Person p4=new Person("小的",21);
persons.add(p1);
persons.add(p2);
persons.add(p3);
persons.add(p4);
persons.add(new Person("小浪",24));
System.out.println("contain emus:"+persons.size());
System.out.println(persons);
}
public static void main(String[] args)
{
treeset();
hashset();
linkedhashset();
}
}
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.TreeSet;
/**
* Set接口
* 1、不允许有重复的元素
* @author Administrator
*
*/
public class SetDemo {
/*
* LinkedHashSet的实现类
* 1、使用哈希表和双向链表实现
* 2、会与插入的顺序输出
* 3、底层使用LinkedHashMap实现
* 4、是HashSet的子类
*/
public static void linkedhashset()
{
Set<Student> students=new LinkedHashSet<Student>();
Student s1=new Student("小小",20);
Student s2=new Student("笑笑",21);
Student s3=new Student("晓晓",22);
students.add(s1);
students.add(s2);
students.add(s3);
System.out.println(students+"\n");
}
/**
* 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("奥迪");
set.add("啊");
System.out.println("emu :"+set.size());
String[] names=set.toArray(new String[]{});
for(String s:names)
{
System.out.println(s);
}
/**
* 自定义
*
*/
System.out.println("---------treeset自定义对象--------");
Set<Emp> emps=new TreeSet<Emp>();
Emp e1=new Emp("lang",20);
Emp e2=new Emp("lan",22);
Emp e3=new Emp("la",25);
Emp e4=new Emp("l",23);
emps.add(e1);
emps.add(e2);
emps.add(e3);
emps.add(e4);
System.out.println("emu:"+emps.size());
System.out.println(emps);
}
/*
* HashSet实现类
* 1、不保证迭代顺序
* 2、底层使用HashMap实现,HashMap(哈希表)的初始容量是16,加载因子为0.75。
* 加载因子:当容量使用0.75时,扩充容量
* 3、自定义对象是否重复的判断条件:如果hashCode不同,一定不是同一个对
* 像,如果不同不一定是同一对象,则判断equles();
*/
public static void hashset()
{
Set<String> set=new HashSet<String>();
set.add("小浪");
set.add("小璇");
set.add("小青");
set.add("小鹏");
System.out.println("Set contain hom meany emu:"+set.size());
//把集合转换成数组
//object[] objs=set.toArray();
String[] names=set.toArray(new String[]{});
for(String s:names)
{
System.out.println(s);
}
System.out.println("--------------hashset自定义对象--------------------");
//
Set<Person> persons=new HashSet<Person>();
Person p1=new Person("小浪",24);
Person p2=new Person("小啊",23);
Person p3=new Person("小白",22);
Person p4=new Person("小的",21);
persons.add(p1);
persons.add(p2);
persons.add(p3);
persons.add(p4);
persons.add(new Person("小浪",24));
System.out.println("contain emus:"+persons.size());
System.out.println(persons);
}
public static void main(String[] args)
{
treeset();
hashset();
linkedhashset();
}
}