Java基础—集合2Set接口和Map接口

第一讲 Set

一 概述

Set:1. 元素存储无下标,所以元素是无序(存入和取出的顺序不一定一致

2. 元素不可以重复

|--HashSet:底层数据结构是哈希表。线程不同步。 保证元素唯一性的原理:判断元素的hashCode值是否相同。如果相同,还会继续判断元素的equals方法,是否为true。

|--TreeSet:可以对Set集合中的元素进行排序。默认按照字母的自然排序。底层数据结构是二叉树。保证元素唯一性的依据:compareTo方法return 0。

Set集合没有特有的功能,Set集合的功能和Collection是一致的

二 HashSet

HashSet:线程不安全,存取速度快。

HashSet的原理: HashSet中不能存入重复的值,如果add()存入重复值,返回false,那么HashSet如何保证数据是不是唯一的呢?

如果在存储的时候逐个equals()比较, 效率较低,哈希算法提高了去重复的效率, 降低了使用equals()方法的次数

可以通过元素的两个方法,hashCode和equals来完成保证元素唯一性。如果元素的HashCode值相同,才会判断equals是否为true。如果元素的hashCode值不同,不会调用equals。

2. 知道了HashSet原理之后所以我们在存储自定义类的时候必须重写hashCode()和equals()方法

* hashCode(): 属性相同的对象返回值必须相同, 属性不同的返回值尽量不同(提高效率)

* equals(): 属性相同返回true, 属性不同返回false,返回false的时候存储

时间: 2024-08-07 07:57:35

Java基础—集合2Set接口和Map接口的相关文章

黑马程序员——Java基础---集合(二)------Map集合

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- Map集合 一.概述 1.简述: Map<K,V>集合是一个接口,和List集合及Set集合不同的是,它是双列集合,并且可以给对象加上名字,即键(Key) 2.特点: 1)该集合存储键值对,一对一对往里存 2)要保证键的唯一性

Java基础——集合(二)——迭代器、Map集合

接上篇,<Java基础--集合(一)--集合体系和Collection> 四.迭代器的使用 使用步骤: 1.通过集合对象获取迭代器对象. 2.通过迭代器对象判断. 3.通过迭代器对象获取. 迭代器原理 由于多种集合的数据结构不同,所以存储方式不同,所以,取出方式也不同. 这个时候,我们就把判断和获取功能定义在了一个接口中,将来,遍历哪种集合的时候,只要该集合内部实现这个接口即可. 迭代器源码 public interface Iterator { publicabstract boolean

Java基础——集合(三)——泛型、增强for、工具类

         接上篇,<Java基础--集合(二)--迭代器.Map集合> 六.泛型 (1)定义: 泛型是一种把明确类型的工作放在了创建对象或者调用方法时候才去明确的特殊的类型. (2)格式: <数据类型> ArrayList<String> aList=new ArrayList<String>(); <String> 即表示的是泛型 (3)好处:(掌握) A:解决了黄色警告线问题 B:把运行期间的转换异常给提前到了编译期间 C:优化了程序

黑马程序员——java基础——集合(Collection)

 黑马程序员--java基础--集合(Collection) ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 集合框架的构成及分类,如下图: 1.为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式. 2.数组和集合类同是容器,有何不同? 数组虽然也可以存储对象,但长度是固定的:集合长度是可变的.数组中可以存储基本数据类型,集合只能存储对象. 3.

java基础--集合框架的认识

一.集合框架 对于不知道存储数量和更复杂的方式存储对象用集合框架. 其中有几个常用的接口和实现类:Collection父接口.List接口,Set接口,Map接口, ArrayList实现类.LinkedList实现类.hashSet实现类.hashMap实现类 Collection集合框架的父接口,该接口存储的是一组不唯一,无序的对象. Collection父接口下有两个子接口: List接口:存储的数据是 不唯一的.有序的 Set接口 : 存储的数据是惟一的.无序的 List接口下也有两个实

java基础-集合笔记

Iterator(foreach) 遍历时只能通过iterator去删除(添加)元素,不能直接通过集合对象删除或添加元素 Set HashSet底层是一个HashMap HashSet添加元素,先判断hashCode,Set中没有相同的则直接添加,Set中有相同的元素,则进一步判断equals,不同则添加,相同则添加不成功 HashSet删除元素,先判断hashCode,相同则再判断equals,equals相同则删除该 List 1.元素是否相同是通过equals方法进行判断的 2.Array

List接口和Set接口和Map接口的of方法

只适用于List接口和Set接口和Map接口,不能改变,不允许有重复元素: 原文地址:https://www.cnblogs.com/wmqiang/p/10663856.html

Java中集合框架,Collection接口、Set接口、List接口、Map接口,已经常用的它们的实现类,简单的JDK源码分析底层实现

(一)集合框架: Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(实现接口的类).所有抽象出来的数据结构和操作(算法)统称为集合框架. 程序员在具体应用的时候,不必考虑数据结构和算法实现细节,只需要用这些类创建一些对象,然后直接应用就可以了,这样就大大提高了编程效率. (二)集合框架包含的内容: (三)集合框架的接口(规范)   Collection接口:存储一组不唯一,无序的对象 List接口:存储一组不唯一,有序的对象 Set接口:存储一组唯一,无序的对象 Map接口:

Java学习笔记32(集合框架六:Map接口)

Map接口与Collection不同: Collection中的集合元素是孤立的,可理解为单身,是一个一个存进去的,称为单列集合 Map中的集合元素是成对存在的,可理解为夫妻,是一对一对存进去的,称为双列集合 Map中存入的是:键值对,键不可以重复,值可以重复 Map接口中的常用集合: 1.HashMap:哈希表的存储结构,但是无法保证存取顺序 2.LinkedHashMap:存储数据采用的是哈希表和链表,可以有顺序 Map接口的常用方法: 示例: package demo; import ja