LinkedHashSet:是HashSet的子类,相似于HashSet多了链表维护元素的顺序,遍历效率高于HashSet 增删效率低于HashSet
package collection;
import org.junit.Test;
import java.util.HashSet;
/*
集合框架:
java.util.Collection:集合层次的根接口
/--java.util.List:有序的,允许重复的;List系列集合都具有索引值
/--ArrayList:采用数组结构存储元素;(多用在查询操作多时,增删效率低,查询效率高)
/--LinkedList:采用链表结构存储元素;(多用于增删操作多时,增删效率高)
/--Vector:
/--java.util.Set:无序的,不允许重复的;
/--HashSet:是Set 接口的典型实现类;判断元素是否存在的依据是,先比较hashCode(),若hashCode不存在,则直接存储
若hashCode存在,则再通过equals()比较两个对象的内容
注意:重写HashCode()和equals()方法时,两者要保持一致!
/--LinkedHashSet:是HashSet的子类,相似于HashSet多了链表维护元素的顺序,遍历效率高于HashSet
增删效率低于HashSet
/--TreeSet:
*/
public class SetTest {
@Test
public void test1(){
HashSet hs=new HashSet();
hs.add("CC");
hs.add("BB");
hs.add("AA");
hs.add("DD");
hs.add("EE");
hs.add(new Person("李四",18));
hs.add(new Person("张三",20));
hs.add("BB");
String str1=new String("BB");
String str2=new String("BB");
System.out.println(str1.hashCode());
System.out.println(str2.hashCode());
System.out.println("-----------------");
Person p1=new Person("张三",18);
Person p2=new Person("张三",18);
System.out.println(p1.hashCode());
System.out.println(p2.hashCode());
System.out.println(hs);
}
}