java.util.Set接口 extends Collection接口

Set接口的特点:

1.不允许存储重复的元素

2.没有索引,没有带索引的方法,也不能使用普通的for循环遍历

java.util.HashSet集合 implement Set接口

hashset特点:

1.不允许存储重复的元素

2.没有索引,没有带索引的方法,也不能使用普通的for循环遍历

3.是一个无序的集合,存储元素和取出元素的顺序有可能不一样

4.底层是一个哈希表结构(查询速度非常的快)

代码:

    public static void main(String[] args) {
HashSet<Integer> set = new HashSet<>();
//使用add方法往集合中添加元素
set.add(1);
set.add(3);
set.add(2);
set.add(1); //使用迭代器遍历set容器
//获取迭代器
Iterator<Integer> iterator = set.iterator();
while(iterator.hasNext()){
Integer next = iterator.next();
System.out.println(next);//1 2 3
} //增强for循环遍历set集合
for (Integer integer : set) {
System.out.println(integer);
}
}

哈希值

/**
* 哈希值:是一个十进制的整数,由系统随机给出(对象的地址值,是一个逻辑地址,是一个模拟出来的地址,不是数据实际存储的物理地址)
* 在Object类中有一个方法它可以获取对象的哈希值
* int HashCode() 返回该对象的哈希码值
* hashCode方法的源码: public native int hashCode();
* native 代表该方法调用的是本地操作系统方法
*/
public class Test {
public static void main(String[] args) {
//Person继承了Object,所以可以使用Object中的hashCode方法
Person person = new Person();
int i = person.hashCode();
System.out.println(i);//1950409828 Person person2 = new Person();
int i2 = person2.hashCode();
System.out.println(i2);//1229416514 //String类的哈希值
String str = "abcd";
String str1 = "abcd";
int code = str.hashCode();
int code1 = str1.hashCode();
System.out.println(code);//2987074
System.out.println(code1);//2987074
System.out.println(str == str1);//true
System.out.println("===========");
System.out.println("重地".hashCode());//1179395
System.out.println("通话".hashCode());//1179395 System.out.println("重地"=="通话");//false
}
} class Person extends Object{
//重写HashCode方法
@Override
public int hashCode() {
return super.hashCode();
}
}

HashSet集合的介绍和哈希值的更多相关文章

  1. HashSet集合介绍和哈希值

    HashSet集合介绍 ~java.util.Set接口 extends Collection 接口~Set接口的特点: 1.不允许存储重复的元素 2.没有索引,没有带索引的方法,也不能使用普通的fo ...

  2. Set\HashSet集合为什么能去重(转)

    如果想查找一个集合中是否包含有某个对象,大概的程序代码怎样写呢?当发现某个元素与要查找的对对象进行equals方法比较的结果相等时,则停止继续查找并返回肯定的信息,否则返回否定的信息.如果是一个集合中 ...

  3. Java set接口之HashSet集合原理讲解

    Set接口 java.util.set接口继承自Collection接口,它与Collection接口中的方法基本一致, 并没有对 Collection接口进行功能上的扩充,只是比collection ...

  4. Java 之 HashSet 集合

    一.概述 java.util.HashSet  是 Set 接口的一个实现类,它所存储的元素是不可重复的,并且元素都是无序的(即存取顺序不一致). java.util.HashSet 底层的实现是一个 ...

  5. 红黑树规则,TreeSet原理,HashSet特点,什么是哈希值,HashSet底层原理,Map集合特点,Map集合遍历方法

    ==学习目标== 1.能够了解红黑树 2.能够掌握HashSet集合的特点以及使用(特点以及使用,哈希表数据结构) 3.能够掌握Map集合的特点以及使用(特点,常见方法,Map集合的遍历) 4.能够掌 ...

  6. 哈希值、HashSet、LinkedHashSet

    一.哈希值 1. 哈希值其实就是一个int数字,我们可以把哈希值看成对象的一个标识,Object中的hashCode方法,可以获取到对象的哈希值 2. Object中的hashCode方法是根据地址值 ...

  7. Java学习:Set接口与HashSet集合存储数据的结构(哈希表)

    Set接口 java.util.Set接口 extends Collection接口 Set接口的特点: 不允许存储重复的元素 没有索引,没有带索引的方法,也不能使用普通的for循环遍历 java.u ...

  8. C# HashSet集合类型使用介绍

    1.HashSet集合 使用HashSet可以提高集合的运算.使用HashSet集合不自带排序方法,如果需要排序的需求可以参考使用List<T>集合配合Sort方法. HashSet的优势 ...

  9. HashSet集合存储数据的结构(哈希表)和Set集合存储㢝不重复的原理

    HashSet集合存储数据的结构(哈希表) Set集合存储㢝不重复的原理 前提:存储的元素必须重写hashCode方法和equals方法

随机推荐

  1. SpringBoot从0到0.7——第四天

    SpringBoot从0到0.7--第四天 今天进行实战开发一个小项目,SpringBoot和Thymeleaf集成的小项目 因为懒得写写前端,直接找的别人的项目在它的的基础上进行配置,进行修改.gi ...

  2. 手把手教你 在IDEA搭建 SparkSQL的开发环境

    1. 创建maven项目 在IDEA中添加scala插件 并添加scala的sdk https://www.cnblogs.com/bajiaotai/p/15381309.html 2. 相关依赖j ...

  3. 简易版 vue实现

    Vue-mini 完整的Demo示例:git@github.com:xsk-walter/Vue-mini.git 一.Vue实例 构造函数: $option\ $el\ $data 判断是否存在 通 ...

  4. mybatis plus 增删改自动填充字段值

    说明 本文实现以下需求效果 创建数据时自动填充 createUserId 和 createTime 更新数据时自动填充 updateUserId 和 updateTime(每次修改都自动填充新的 up ...

  5. 监控工具:nmon

    软件介绍 分析工具 分析 AIX 和 Linux 性能的免费工具,   这个高效的工具可以工作于任何哑屏幕.telnet 会话.甚至拨号线路.另外,它并不会消耗大量的 CPU 周期,通常低于百分之二. ...

  6. 521. Longest Uncommon Subsequence I - LeetCode

    Question 521. Longest Uncommon Subsequence I Solution 题目大意:给两个字符串,找出非共同子串的最大长度 思路:字符串相等就返回-1,不等就返回长度 ...

  7. 821. Shortest Distance to a Character - LeetCode

    Question 821. Shortest Distance to a Character Solution 思路:遍历字符串S,遇到与字符C相等就分别向左/右计算其他字符与该字符的距离,如果其他字 ...

  8. java对象与Json字符串之间的转化

    public class Test { public static void main(String[] args) { // 实现java对象与Json字符串之间的转化 // 1. Person对象 ...

  9. 【原创】项目三Raven-2

    实战流程 1,C段扫描,并发现目标ip是192.168.186.141 nmap -sP 192.168.186.0/24 扫描目标主机全端口 nmap -p- 192.168.186.141 访问8 ...

  10. GitHub 简介

    用详细的图文对GitHub进行简单的介绍. git是一个版本控制工具,github是一个用git做版本控制的项目托管平台. 主页介绍: overview:总览.相当于个人主页. repositorie ...