package cn.mmc.day14;
import java.util.*;
/*
|--Set:元素是无序(存入和取出的顺序不一定一致),元素不可以重复。、
|--HashSet:底层数据结构是哈希表。是线程不安全的。不同步。
原理:HashSet是如何保证元素唯一性的呢?
是通过元素的两个方法,hashCode和equals来完成。
当add元素时,先要比较元素的HashCode值
如果元素的HashCode值相同,才会判断equals是否为true。
如果元素的hashcode值不同,不会调用equals。
注意,对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashcode和equals方法。
当我们使用自定义class对象时,要覆写hashCode和equal方法,以保证对象的唯一性
|--TreeSet:
Set集合的功能和Collection是一致的。
*/
public class SetTest {
public static void sop(Object obj)
{
System.out.println(obj);
}
/**
* @param args
*/
public static void main(String[] args) {
HashSet hs = new HashSet();
sop(hs.add("java01"));//true
sop(hs.add("java01"));//false//元素不可以重复。原理:注意,对于判断元素是否存在,
//以及删除等操作,依赖的方法是元素的hashcode和equals方法。
}
}
分享到:
相关推荐
源码解析jdk7.0集合:HashSet的底层实现原理.pdf
hashSet底层去重原理
HashSet的实现原理 ,HashSet与HashMap的区别 以及 HashSet的底层实现方式
java HashSet 集合排序,需要通过利用TreeSet集合排序。2013-10-30。
对于 HashSet 而言,它是基于 HashMap 实现的,HashSet 底层采用 HashMap 来保存所有元素,因此 HashSet 的实现比较简单,查看 HashSet 的源代码,可以看到如下代码:
介绍LinkedHashMap的底层原理 请介绍TreeMap的底层原理 Map和Set有什么区别 ArrayList和LinkedList有什么区别 有哪些线程安全的List 介绍一下ArrayList的数据结构 谈谈CopyOnWriteArrayList的原理 说一说TreeSet和...
在JDK1.8之前,哈希表底层采用数组+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里。
常用集合底层原理深度解析,包括arraylist,hashmap,hashset,linkedarrayList,面试必备!
主要介绍了Java HashSet集合存储遍历学生对象代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
set集合是无序的相较于list集合是没有下标的,hashset底层去重,与hashCode、equals方法相关,排序的元素不是String,而是对象Person
java所有集合类底层源码解析汇总,包括ArrayList、HashMap、HashSet、LinkedList、TreeMap、HashSet、ConcurrentHashMap等集合框架的底层实现源码大白话解读。
这篇集合总结一共包括十二节,介绍了一些接口和实现类的底层源码以及基本的增加、删除元素等的操作(包括List、Map、Set接口、ArrayList、Vector、LinkedList、HashSet、TreeSet、HashMap、TreeMap等实现类)。...
HashSet 是 Java 中的一个集合类,它实现了 Set 接口并提供了基于哈希表的无序、不重复元素的集合。具体来说,它是通过哈希表(实际上是一个 HashMap 实例)来存储元素的。 以下是 HashSet 的一些主要特点: 无序...
这个是关于java语言的hashset集合类的一些基本用法和详解了个方法的使用
主要介绍了Java面试题之HashSet的实现原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
主要介绍了Java面试题 从源码角度分析HashSet实现原理?,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
简述了HashSet去重原理
Java基础加强_ArrayList_HashSet的比较及Hashcode分析