Java(集合类)第二部分(Set)

原创 2016年08月30日 20:44:51

Set一般不能直接使用,可以直接使用的类是HashSet,TreeSet,LinkedHashSet,这几个类虽然在内部实现上有所不同,但由于其实现了相同的接口,因此使用方法基本相同。TreeSet还实现类SortedSet接口,可以对自合中的元素排序

1.HashSet类
HashSet继承自AbstractSet并且实现了Set接口。它创建了一个类集合,该类集合使用散列表进行存储。散列表通过使用散列法的机制来存储信息。
在散列中使用一个关键字来确定唯一的一个值,称为散列值,而散列值则被用来当作与关键字相连数据的存储下标。关键字到其散列值的转换是自动执行的,散列值本身看不到,程序代码也不能直接索引散列表。
HashSet类的构造方法,
HashSet()构造一个默认的散列集合
HashSet(Collection c)用集合c中的元素初始化散列集合
HashSet(int capacity)用capacity初始化散列集合的容量
HashSet(int capacity,float fillRatio)用它的参数初始化散列集合的容量和填充比(加载容量)
//填充比必须介于0.0与1.0之间,用于确定在散列表集合向上调整大小之前有多少能被填充,具体的说,就是当元素的个数大于散列集合容量乘以它的填充比时,散列集合被扩大。对于没有获得填充比的构造函数,默认使用0.75

import java.util.HashSet;

public class HashSetDemo {
    public static void main(String[] args) {
        HashSet hashSet=new HashSet();
        hashSet.add("A");
        hashSet.add("B");
        hashSet.add("C");
        hashSet.add("D");
        hashSet.add("E");
        hashSet.add("F");
        hashSet.add("A");
        System.out.println(hashSet);
    }
}

结果
[A, B, C, D, E, F]
分析:从输出结果可以看出,元素并没有按顺序进行存储,并且也没有重复元素。

2.TreeSet
TreeSet是使用树结构存储元素的类集合,对象按升序存储,访问和检索是很快的。在存储了大量需要进行快速检索的排序信息的情况下,TreeSet是一个很好的选择。
TreeSet()构造一个空的树集合该树集合将根据其元素的自然排序按升序排序
TreeSet(Collection c)构造一个包含了c的元素的树集合
TreeSet(SortedSet ss)构造了一个包含了ss元素的树集合

import java.util.*;
public class TreeSetDemo {
    public static void main(String[] args) {
        TreeSet hsSet=new TreeSet();
        hsSet.add("D");
        hsSet.add("E");
        hsSet.add("F");
        hsSet.add("A");
        hsSet.add("B");
        hsSet.add("C");
        hsSet.add("A");
        System.out.println(hsSet);
        System.out.println(hsSet.first());
        System.out.println(hsSet.last());
        System.out.println(hsSet.lower("E"));
        System.out.println(hsSet.pollLast());
        System.out.println(hsSet);
    }

}

结果
[A, B, C, D, E, F]
A
F
D
F
[A, B, C, D, E]

版权声明:本文为博主原创文章,未经博主允许不得转载。

Java:常用集合类(List、Map、Set、Queue、Stack)

迭代器基本概念Iterator接口包含3个方法:public interface Iterator { E next(); boolean hasNext(); void re...
  • jinzhao1993
  • jinzhao1993
  • 2016年10月07日 07:54
  • 663

浅谈java集合类(三)【Set,Queue】

Set是一个有趣的集合。它看起来有点像List,实际操作却有点像Map。Set也是记录一系列值的集合,但是呢,它和Map的key相同,它不能重复,否则会插入失败。所以呢,我们经常可以看见在Map中可以...
  • u010233260
  • u010233260
  • 2015年04月04日 22:31
  • 643

为什么集合类没有实现Cloneable和Serializable接口

转自:牛客网 为什么集合类没有实现Cloneable和Serializable接口? 答:克隆(cloning)或者序列化(serialization)的语义和含义是跟具体的实现相关的。因此应...
  • qq_18433441
  • qq_18433441
  • 2017年10月13日 09:44
  • 1009

FreeType2 教程(第二部分)

 第二步 -- 管理字形 介绍 这是“FreeType2 教程”的第二部分。它将教会你如何: * 检索字形度量 * 容易地管理字形图像 * 检索全局度量(包括字距调整) * 渲染一个简单的字符串(采用...
  • yujinqiong
  • yujinqiong
  • 2009年05月08日 20:28
  • 5436

Java集合详细介绍及原理

Java集合详细介绍及原理 Collection(单列集合) List(有序,可重复) ArrayList 底层数据结构是数组,查询快,增删慢 线程不安全,效率高 Vector 底层数据...
  • u010788587
  • u010788587
  • 2015年01月25日 21:06
  • 1753

Java 集合类详解(含类图)

0.参考文献 http://blog.csdn.net/liulin_good/article/details/6213815 1.java集合类图 1.1 1.2 ...
  • xyw591238
  • xyw591238
  • 2016年06月28日 16:26
  • 9295

javaSE-常用类-集合类Set系列

Set接口中常用的类 HashSet:线程不安全,存取速度快。 它是如何保证元素唯一性的呢? TreeSet: 线程不安全,可以对Set集合中的 元素进行排序。 它的排序是如何进行的呢? ...
  • u011417072
  • u011417072
  • 2014年01月17日 19:51
  • 506

集合类 Java中的集合类解析和一些有深入的面试题

Java集合类解析 List、Map、Set三个接口,存取元素时,各有什么特点? List 以特定次序来持有元素,可有重复元素。Set 无法拥有重复元素,内部排序。Map 保存...
  • qq_33326449
  • qq_33326449
  • 2016年10月05日 23:39
  • 3124

java 集合类 之 Set

Set类    Set接口继承自Collection,不按特定的方式排序,并且不能重复,主要有两个实现类:HashSet和TreeSet,HashSet类按照哈希算法来存取集合中对象,存取速度比较快,...
  • songjinbin
  • songjinbin
  • 2014年03月26日 14:19
  • 613

黑马程序员——集合——Set集合,增强for循环,数据结构,泛型,Collections集合工具类

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一.Set集合 (1)Set集合的特点: 无序(存储和取出的顺序不一致),元素唯一 S...
  • hison_lian
  • hison_lian
  • 2015年08月23日 22:20
  • 730
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java(集合类)第二部分(Set)
举报原因:
原因补充:

(最多只允许输入30个字)