首页 > 其他分享 >集合之Set【HashSet】

集合之Set【HashSet】

时间:2022-12-12 09:35:29浏览次数:42  
标签:Set HashSet System hashCode println set1 哈希 集合 out

package com.Lucky;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.function.Consumer;

/**
 * Set集合:  无序/不可重复/没有索引
 *
 *    HashSet:
 *             底层采用【哈希表】存储结构
 *             JDK8之前:哈希表由数组+链表组成
 *             JDK8之后:哈希表由数组+链表+红黑树组成
 *
 */

/**
 *     哈希值:
 *           1.对象的整数形式
 *           没有重写hashCode方法,不同对象计算的哈希值也是不同的
 *           重写了hashCode方法,但是不同对象的属性值相同,计算出来的哈希值也是一样的
 *          注意点:哈希碰撞
 */
public class HashSetDemo {
    public static void main(String[] args) {
        //创建Set集合
        Set<String> set1=new HashSet<>();
        set1.add("唯易人生");   //返回的结果是booleam类型
        set1.add("YYDS");
        set1.add("什么鬼???");
        set1.add("什么鬼???");   //false  重复的数据无法添加



        //遍历获取数据
           /*
           1.迭代器遍历
            */
        System.out.println("-------- 1.迭代器遍历--------------");
        Iterator<String> it = set1.iterator();
        while (it.hasNext()){
            System.out.println(it.next());
        }

        
         /*
           2.增强for循环遍历
            */
        System.out.println("---------2.增强for循环遍历---------------");
        for (String s : set1) {
            System.out.println(s);
        }

        /*
          3.lamda表达式遍历
          */
        System.out.println("---------3.lamda表达式遍历---------------");
        //匿名内部类重写
        set1.forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        });
        //lamda表达式
        set1.forEach(str->System.out.println(str));

  //////////////////////////////////////////////////////////////////
        System.out.println("****************** hashSet ************************");
        //创建TestDemo对象
        TestDemo Demo1=new TestDemo("唯易人生",22);
        TestDemo Demo2=new TestDemo("唯易人生",22);

        //此时已经重写了hashCode方法
        System.out.println(Demo1.hashCode());  //计算出来的哈希值一样
        System.out.println(Demo2.hashCode());

        //特殊情况【哈希碰撞】
        System.out.println("---------【哈希碰撞】-----------");
        System.out.println("abc".hashCode());
        System.out.println("acD".hashCode());

        int index=(10-1) & 80;
        System.out.println(index);
    }
}

  

标签:Set,HashSet,System,hashCode,println,set1,哈希,集合,out
From: https://www.cnblogs.com/Lucky-only/p/16975212.html

相关文章

  • 集合之泛型【Genericcs】
    packagecom.Lucky;importjava.util.ArrayList;importjava.util.Arrays;importjava.util.Iterator;/***泛型的应用场景:*1。如果我们在定义类/......
  • $forceUpdate和this.$set('userInfo',name,'小红');
    在Vue官方文档中指出,$forceUpdate具有强制刷新的作用。那在vue框架中,如果data中有一个变量:age,修改他,页面会自动更新。但如果data中的变量为数组或对象,我们直接去给某个......
  • 集合之Collections工具类
    packagecom.Lucky;importjava.util.ArrayList;importjava.util.Collections;importjava.util.Comparator;/*Collections:java。util.Collections解......
  • 集合接口【Collection】之ArrayList
    packagecom.Lucky;importjava.awt.*;importjava.util.LinkedList;importjava.util.List;/*ArrayList:1.底层使用顺序存储结构,可以使用角......
  • 集合
    1packagecom.Lucky;23importjava.util.ArrayList;4importjava.util.Iterator;56/**7*集合:Collection[接口]与Map[接口]8*9*......
  • Collection接口框架(Set接口)
    Collection接口框架(Set接口)/*  |----Collection接口:单列集合,用来存储一个一个的对象        |----Set接口:存储无序的、不可重复的数据--->高中讲......
  • python字符串中返回bool类型的函数集合
    #isspaceistitleisupperislower#isspace判断字符串是否是一个由空格组成的字符串booltype=string.isspace()->无参数可传,返回一个布尔类型#由空格组成的字符串......
  • 离散数学: 集合关系
    课时4:集合与关系(上)_哔哩哔哩_bilibili       一些栗子:    下面那个直接打开就行了    栗子: ......
  • Microsoft 365 开发:执行Get-AzureADDirectorySettingTemplate命令错误
    Blog链接:​​​https://blog.51cto.com/13969817​​近期有小伙伴执行AzureAD相关命令Get-AzureADDirectorySettingTemplate时,遇到如下错误:Theterm‘Get-AzureADDirector......
  • Java集合类的简单使用
    下面算法使用的Student类classStudentimplementsComparable<Student>{privatefinalStringname;privatefinalIntegerage;publicStudent(Stringname,In......