15.set集合

1、java.util.Collection[I]
   java.util.List[I]
    java.util.ArrayList[C]
    java.util.LinkedList[C]
    java.util.Vector[C]
     java.util.Stack[C]
   java.util.Set[I]
    java.util.HashSet[C]
     java.util.LinkedHashSet[C]
    java.util.SortedSet[I]
     java.util.TreeSet[C]

  2、Set集合的存储特点
   a、set集合属于无序集合,这个无序指的是:HashSet。
   b、TreeSet集合无序,指的是,存储顺序可能并不是插入顺序。
      TreeSet集合有序,指的是,插入时的数据会自动根据某个逻辑升序排列。
  3、HashSet:
   a、该集合具有互斥性,即,相同的元素无法重复的添加。
   b、HashSet每次扩容16个大小。
   c、HashSet每次add(E e),e为添加的键值,该集合中存储的数据以键值对的形式存放  

  键值即为传入的数据e,键名即为:hash(e),如果存放相同的键值,那么必定拥有相同
   的键名,存储就会失败,hashset.add(Object)返回false,否则返回true;
  4、TreeSet:
   a、插入的元素会按照compareTo规则进行升序排序来存储。
   b、输出时,TreeSet数据不会按照插入顺序来输出
  5、LinkedHashSet
   a、插入的元素会按照插入的顺序输出
   (PS:但是该集合中的元素也是无序的,只是增加了链表数据结构。来维护插入顺序。)
  总结:
   HashSet:哈希表是通过使用称为散列算法的机制来存储信息,元素没有以某种特定的   顺序来存储。
         TreeSet:提供一个使用树结构存储Set接口来实现,对象以升序的顺序来存储,访问和    遍历的时间都很快。
   LinkedHashSet:以元素插入的顺序来维护集合的链接表,允许以插入的顺序在集合中迭   代。

抽奖软件:
a、通过键盘录入抽奖人姓名,多个抽奖人用“=”号分割。输入完成后,控制台打印抽奖人姓名,并提示YES OR NO来表示确认。一旦确认,自动为抽奖人分配ID,开始抽奖。(如果出现重名,则以ID为准。)
b、奖品存放在某个集合中。
c、1等奖 1个   2等奖 3个   3等奖  4个。
d、每次抽奖均打印姓名,然后键盘输入next开始第二次抽奖。如果奖品已经抽完,则公布中奖汇总。
不再提示next。


 

你可能感兴趣的:(15.set集合)