java 集合之Set

原创 2016年08月30日 09:51:43

Set的特点是 无序,无下标,元素不可重复,我们看一下它的实现类

HashSet

public static void main(String[] args) {
		Set<String> set = new HashSet<String>();
		set.add("1");
}
当我们new 一个HashSet的时候
/**
     * Constructs a new, empty set; the backing <tt>HashMap</tt> instance has
     * default initial capacity (16) and load factor (0.75).
     */
    public HashSet() {
        map = new HashMap<>();
    }
其他就是new 了一个HashMap,我们add的时候,
/**
     * Adds the specified element to this set if it is not already present.
     * More formally, adds the specified element <tt>e</tt> to this set if
     * this set contains no element <tt>e2</tt> such that
     * <tt>(e==null ? e2==null : e.equals(e2))</tt>.
     * If this set already contains the element, the call leaves the set
     * unchanged and returns <tt>false</tt>.
     *
     * @param e element to be added to this set
     * @return <tt>true</tt> if this set did not already contain the specified
     * element
     */
    public boolean add(E e) {
        return map.put(e, PRESENT)==null;
    }

其实就是将我们要放入的元素作为map的key存放,value是一个object对象

// Dummy value to associate with an Object in the backing Map
    private static final Object PRESENT = new Object();
其他的它底层实现就是HashMap,我们知道HashMap的键对象,存储是根据哈希算法,具体可以参考我的另一篇文章

http://blog.csdn.net/xu511739113/article/details/52366754

所以如果是自定义的对象,我们需要重写equals和hashCode方法。

LinkedHashSet的特点是可以保留插入顺序。要注意,如果要使用LinkedHashSet也需要重写equals和hashCode方法。


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

java高级特性之--集合

集合框架 所谓集合框架就是一个类库的集合,集合框架就是用来表示和操作集合的统一架构,它包含了实现集合的接口与类 集合框架中不同集合类各自有不同的数据结构,所以在使用中要根据应用的性能要求来选择不同的集...
  • djx5344
  • djx5344
  • 2017年08月01日 09:15
  • 92

JAVA高级特性之集合

框架 http://www.cnblogs.com/skywang12345/p/3308498.html List集合 http://www.cnblogs.com/skywang12345/...
  • ChuanSuoYiDaSan
  • ChuanSuoYiDaSan
  • 2018年01月08日 14:27
  • 26

JAVA基础知识之Set集合

Set集合的基本特征是不记录添加顺序,不允许元素重复(想想是为什么)。最常用的实现类是HashSet. 本文将要介绍以下内容 HashSet类 HashSe的特征HashSet的equa...
  • solafy
  • solafy
  • 2016年10月28日 23:22
  • 5862

java集合之Set与List总结

java集合总结 Set集合(理解)          (1)Set集合的特点                   无序,唯一          (2)HashSet集合(掌握)          ...
  • leeioy
  • leeioy
  • 2017年01月09日 21:24
  • 1873

java中set集合的使用方法

1.HashSet  java.util.HashSet类实现了Java.util.Set接口。 它有如下特点:  1.它不允许出现重复元素;  2.不保证集合中元素的顺序  3.允许包...
  • u013399093
  • u013399093
  • 2015年08月18日 11:46
  • 23585

Java集合List和Set的原理

集合是一种可以存储对象的容器,当然这个容器也是一个对象。和数组相比,集合的优势在于他的长度是可以变化,另外集合可以存储多个类型的对象,而数组的长度是固定的,只能存储一个类型的元素;但是集合不能存储基本...
  • u012560902
  • u012560902
  • 2016年07月30日 11:51
  • 5651

[学习笔记]Java集合框架之Set集合

Set集合 特点 Set集合中的元素是唯一的,不可重复(取决于hashCode和equals方法),也就是说具有唯一性。Set集合中元素不保证存取顺序,并不存在索引。 继承关...
  • jacobvv
  • jacobvv
  • 2014年12月14日 22:45
  • 2094

java List 和Set集合遍历,以及相互转化

list和set集合是java中最常见的两种数据结构,都是Collection的子集,今天就简单的说说他们两者的遍历以及相互转化吧。 一、list的遍历 有三种遍历方法: /**...
  • afzaici
  • afzaici
  • 2016年06月14日 16:17
  • 3931

对java set集合的理解与学习

java 集合是用来存储数量不等的多个对象,并可以实现常用的栈,队列等,还可以保存具有映射关系的关联数组,集合下面分为,set ,list,map     首先set 集合就像一个罐子,多个对象丢进去...
  • u011230322
  • u011230322
  • 2016年06月12日 23:22
  • 3317

我的JAVA初学之路----List集合和Set集合(上)

好悲催啊,国庆不想回家,就只有宅在寝室跟自己玩了。空间里朋友圈里都在秀旅游,有去重庆的,有去上海的。 不过还好我这几天是有准备的—-跟代码一起玩耍呗。哈哈哈哈哈~ 我是真的感觉自己好菜,大...
  • yang957862615
  • yang957862615
  • 2016年10月04日 22:41
  • 1099
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java 集合之Set
举报原因:
原因补充:

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