zoukankan      html  css  js  c++  java
  • 集合框架之Set学习

    前言:

            1、何为框架:可以理解为一个基础结构,在基础结构上进行进一步开发会变得很方便。

             2、三种集合类型:集合(Set) :元素无序不可重复; 列表(List) :元素有序可重复; 映射(Map) :键不可以重复,值可以重复

    Set是实现Collection接口的一个子接口。其常用的实现类有HashSet、LinkedHashSet、TreeSet等。下面将从“set和hashSet的一些用法、set和LinkedHashSet的一些用法”来进行学习总结。

    HashSet常用方法的总结:   
    public static void BestTest() {
    // set和hashSet的一些用法
    //HashSet<String> hashSet = new HashSet<String>();
    //hashSet向上转型为Set类型,上面声明Set的方法不建议使用
    Set<String> set = hashSet;
    Set<String> set = new HashSet<String>();
    boolean b1 = set.isEmpty();
    System.out.println(b1);

    set.add("a");
    set.add("b");
    set.add("c");
    set.add("d");
    set.add("c"); //重复元素会忽略掉

    boolean b2 = set.isEmpty();
    System.out.println(b2);

    int i = set.size();
    System.out.println("clear之前总的元素为:"+i);
    set.remove("a");

    set.clear();
    int j = set.size();
    System.out.println("clear之后总的元素为:"+j);
    }

    为什么使用Iterator遍历Set集

    public static void setTest() {
            Set<String> set = new HashSet<String>();
    set.add("a");
    set.add("b");
    set.add("c");
    set.add("d");
    set.add("c"); //重复元素会忽略掉


    // 调用Set对象的iterator(),会生成一个迭代器对象,该对象用于遍历set
    Iterator<String> it = set.iterator(); // 这里进行泛型设置
    // while用于不定次数的循环
    while (it.hasNext()) {
    System.out.println(it.next()); //取出元素并将游标向后移动1位
    }
    }
    总结:因为set是无序的,不能通过下标取,只能通过迭代器Iterator取。
    hasNext():有没有下一个元素。next():返回游标所指元素的元素(将其取出),并将游标向后挪一位。

    继承关系:Iterator <-- Collection <-- Set(List) <-- HashSet

    LinkedHashSet
    LinkedHashSet:使用链表维护了一个添加进集合的顺序。导致我们“遍历”该集合元素时,是按照添加进去的顺序遍历的(这个并不能说明是有顺序的,因为set本身就是“无序且不可重复的”) 。

    LinkedHashSet插入性能略低于HashSet。linkedHashSet的迭代访问性能高于HashSet
     
    public static void testLinkedHashSet() {
    Set set = new LinkedHashSet();
    set.add(123);
    set.add(456);
    set.add("A");
    set.add(null);

    Iterator iterator = set.iterator();
    while (iterator.hasNext()) {
    System.out.println(iterator.next());
    }
    }
  • 相关阅读:
    总结c#和javascript中常见的相关的"空"
    javascript从未如此流行(JavaScript has never been so popular .)
    解决ajax调用中ie的缓存问题
    《.NET框架程序设计》第5章 基元类型、引用类型与值类型
    DataTable复制到新的DataTable并筛选
    《.NET框架程序设计》第1章 .NET开发平台体系架构 读后感
    《.NET框架程序设计》第4章 类型基础 读后感
    《.NET框架程序设计》第2章 第3章 读后感
    《道德经》程序员版第四十二章
    数据库设计总结
  • 原文地址:https://www.cnblogs.com/kelly-one/p/8324606.html
Copyright © 2011-2022 走看看