Set:元素是无序,不可重复的

HaseSet:底层数据结构是哈希表

定义一个类Demo

获取Demo对象,system.out.println(demo),打印demo对象,Demo@xxxxxx

Demo对象在内存中是按照哈希值存储在哈希表中,取出也是按照哈希值,所以是无序的

import java.util.HashSet;

class Demo{
}
public class HashSetDemo { /**
* @param args
*/
public static void main(String[] args) {
Demo demo1=new Demo();
Demo demo2=new Demo();
System.out.println(demo1);
System.out.println(demo2);
HashSet set=new HashSet();
set.add(demo1);
set.add(demo2);
System.out.println(set);
} }

结果:

Demo@1a8fa0f0

Demo@4b8efa2f

[Demo@4b8efa2f, Demo@1a8fa0f0]

定义一个类Demo

重写hashCode()方法,返回一个固定的数字,例如:90,打印对象显示,Demo@3c

获取多个对象,哈希值都是一样的,此时存入HaseSet中,使用equals()方法,判断是否是同一个对象,如果不是同一个对象,会顺延存储

import java.util.HashSet;

class Demo{
@Override
public int hashCode() {
return 90;
}
@Override
public boolean equals(Object obj) {
System.out.println("调用到此处说明,判断是否同一对象");
return super.equals(obj);
}
}
public class HashSetDemo { /**
* @param args
*/
public static void main(String[] args) {
Demo demo1=new Demo();
Demo demo2=new Demo();
System.out.println(demo1);
System.out.println(demo2);
HashSet set=new HashSet();
set.add(demo1);
set.add(demo2);
System.out.println(set);
} }

结果:

Demo@5a

Demo@5a

调用到此处说明,判断是否同一对象

[Demo@5a, Demo@5a]

[javaSE] 集合框架(HashSet)的更多相关文章

  1. Java自学-集合框架 HashSet

    Java集合框架 HashSet 示例 1 : 元素不能重复 Set中的元素,不能重复 package collection; import java.util.HashSet; public cla ...

  2. [javaSE] 集合框架(体系概述)

    为什么出现集合类 为了方便对多个对象的操作,对对象进行存储,集合就是存储对象最常用的一种方式 数组和集合的不同 数组是固定长度的,集合是可变长度的 数组可以存储基本数据类型,集合只能存储对象 数组只能 ...

  3. 集合框架-HashSet集合(无序唯一)

    1 package cn.itcast.p4.hashset.demo; 2 3 import java.util.HashSet; 4 import java.util.Iterator; 5 /* ...

  4. 集合框架(HashSet存储自定义对象保证元素唯一性)

    HashSet如何保证元素唯一性的原理 1.HashSet原理 a. 我们使用Set集合都是需要去掉重复元素的, 如果在存储的时候逐个equals()比较, 效率较低,哈希算法提高了去重复的效率, 降 ...

  5. [javaSE] 集合框架(共性方法)

    Collection接口的常用方法 add(),添加一个元素 addAll(),添加一组元素 clear(),清空 remove(),移除一个 removeAll(),移除一组 size(),元素个数 ...

  6. 集合框架-HashSet存储自定义对象

    1 package cn.itcast.p4.hashset.test; 2 3 import java.util.HashSet; 4 import java.util.Iterator; 5 6 ...

  7. [javaSE] 集合框架(TreeSet)

    TreeSet:可以对Set集合中的元素排序,默认按照ascii表排序,二叉树结构 左边叉是小的,右边叉是大的 存储自定义对象 定义一个类Student实现Comparable类,使自定义类具备比较性 ...

  8. [javaSE] 集合框架(迭代器)

    当我们创建一个集合以后,可以直接使用system.out.println()来打印这个集合,但是,我们需要可以对每个元素进行操作,所以,这里需要使用迭代器来遍历集合 迭代器其实就是集合取出元素的方式 ...

  9. [javaSE] 集合框架(Map概述)

    Map集合,将key对象映射到value对象 三个主要的子类:Hashtable,HashMap,TreeMap Hashtable:底层是哈希表数据结构,不允许使用null值,线程同步 HashMa ...

随机推荐

  1. gridview获取选中行索引及当前行数据

    gridview获取选中行索引及当前行数据 一.非直接绑定数据: <!--前台传值--> <asp:TemplateField HeaderText="操作"&g ...

  2. RabbitMQ广播模式

    广播模式:1对多,produce发送一则消息多个consumer同时收到.注意:广播是实时的,produce只负责发出去,不会管对端是否收到,若发送的时刻没有对端接收,那消息就没了,因此在广播模式下设 ...

  3. Kotlin 初体验

    本文由作者邹丽萍授权网易云社区发布. 背景 Kotlin 是 JetBrains 公司(著名的 IntelliJ IDEA 正是由这家公司开发的,Android Studio 也是基于 IDEA 的) ...

  4. Day 18 正则表达式.

    一.字符 .匹配除换行符以外的任意字符. \w 匹配字母数字或者下划线. \s 匹配任意的空白符 \d 匹配数字 \n 匹配一个换行符 \t 匹配一个制表符 ^ 匹配字符串的开始. $ 匹配字符串的结 ...

  5. hdu2829 Lawrence

    题目链接:戳我 朴素DP:\(dp[i][j]=dp[i-1][k]+cost[k+1][j]\) 其中dp[i][j]表示炸第i次的时候,处理到前j个的最小值是多少.cost[i][j]表示的是i, ...

  6. scapy IPv6 NS NA报文构造

    NS 报文构造: #! /bin/python from scapy.all import * a=IPv6(src='2a01:4f8:161:5300::40', dst='ff02::1:ff0 ...

  7. 用0x077CB531计算末尾0的个数

    http://www.matrix67.com/blog/archives/3985 unsigned int v;  // find the number of trailing zeros in ...

  8. ZZNU 2076(退役学长最后的神功 zz题)

    题目链接:http://acm.zznu.edu.cn/problem.php?pid=2076 输入一个T表示有T个样例每组实例一个整数n(0〈n〈1000接下来输入2*n个数字,代表一个2*n的矩 ...

  9. Xshell多版本被曝存在后门,了解紧急响应修复预案

    近日,Xshell远程终端工具被爆出多个版本存在后门,无疑是安全圈的一个大新闻.恶意攻击者利用该后门可以收集到用户名密码等主机敏感信息,并将之传回攻击者的机器,导致服务器信息泄露,进一步可致使整个服务 ...

  10. vue 学前班001(基础概念)

    1  学习目标 通过这一节,你会学会: 1.目前前端技术使用的趋势 2.什么是MVVM 3.Vue.js的两大核心 4.Vue.js的适用场景  诞生背景 近几年来,得益于手机设备的普及和性能的提升, ...