Set集合

  • 目录


 

  1. Set集合的特性
  2. Set的实现类
  3. Set集合的常用操作
  4. Set集合t使用的一个例子

 

  • Set集合的特性


  1. set集合中的内容是无序的(存储顺序和取出来的顺序不一定一致),而且不可重复;
  2. 检索元素和修改元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变;
  3. set数组中不存在get()方法

Set图示

 

 

  • Set的实现类


  • 实现类1——HashSet
    • 底层数据结构是Hash表;
    •  HashSet是如何保证元素唯一性的原理:
        是通过元素的两个方法,hashCode和equals来完成的
      如果元素的hashCode值相同,才会判断equals是否为true
      如果hashCode的值不同,不会调用equals方法;
  Set<String> set = new HashSet<String>();

 

    实现类2——TreeSet
    • 底层数据结构是二叉树;
    • 保证元素唯一性的依据:通过ComparaTo,返回0;
    •  通过TreeSet可以实现Set集合的排序;
  Set<Integer> set2 = new TreeSet<Integer>();

 

 

  • Set集合的常用操作(增删改查)


 

  1. 添加元素,单次添加一个元素——add(value);
  1 set.add("张三");
  2 set.add("李四");
  3 set.add("李四");//测试重复,编译运行不会报错,但是集合里只有一个”李四“

 

  1. 添加元素,单词添加一个集合——addAll(new set);
 set2.addAll(set);//set2获得set的所有元素

 

  1. 删除元素,单次删除指定元素——remove(value);
  set.remove("李四");

 

  1. 修改元素(没有自带方法,其实修改Set里的内容,可以理解为把需要修改的元素删除后添加进去新的内容,因为都是无序的)
  1 //改,因为是无序的,也没有实际意义上 的改,可以直接把要修改的元素删除,后添加新元素,如改张三为张哥:
  2 set.remove("张三");
  3 set.add("张哥");

 

  1. 获得元素,也就是查出一个元素,Set没有像List那样具有直接的get方法,可以钩爪其他方法来获得,获得全部元素的话直接遍历Set集合;
  1 //查,set无序,不能按序号查,所以只有遍历查
  2 for (String s : set) {
  3     System.out.print(s);
  4 }

 

    以上所有也可以通过遍历来操作。

 

  • Set集合的一个例子


 

 1 import java.util.HashSet;
 2 import java.util.Set;
 3 
 4 public class TestSet {
 5     
 6     public static void main(String[] args) {
 7         
 8         Set<String> set = new HashSet<String>();
 9         Set<String> set2 = new HashSet<String>();
10         
11         //
12         set.add("张三");
13         set.add("李四");
14         set.add("李四");//测试重复,编译运行不会报错,但是集合里只有一个”李四“
15         set2.addAll(set);//set2获得set的所有元素
16         
17         
18         //改,因为是无序的,也没有实际意义上 的改,可以直接把要修改的元素删除,后添加新元素,如改张三为张哥:
19         set.remove("张三");
20         set.add("张哥");
21         
22         //
23         set.remove("李四");
24         
25         //查,set无序,不能按序号查,所以只有遍历查
26         for (String s : set) {
27             System.out.print(s);
28         }
29         
30     }
31 
32 }

 

posted @ 2018-08-04 21:56  四叶笔记  阅读(127)  评论(0编辑  收藏  举报