Java集合进阶——Set系列集合

一、Set集合特点

练习Set常用方法 :

package com.JinJie.MySet;

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

//练习使用Set系列集合使用多种方式遍历
public class demo01 {

    public static void main(String[] args) {

        //Set也是接口,通过多态创建它的实现类对象调用方法
        Set<String> set = new HashSet<>();

        //Set系列集合无法添加相同元素
        //如果添加相同元素,则add()方法将返回false,重复的元素不会添加成功
        set.add("Set");
        set.add("集");
        set.add("合");

        //1,迭代器遍历
        Iterator<String> iterator = set.iterator();
        while (iterator.hasNext()){
            String str = iterator.next();
            System.out.println(str);
        }
        System.out.println("=================");

        //2,增强for遍历
        for (String s : set) {
            System.out.println(s);
        }
        System.out.println("=================");

        //3,lambda表达式遍历
        set.forEach((str)->{
            System.out.println(str);
        });
    }
}
 

二、HashSet

 

哈希值练习:

package com.JinJie.MySet.hashset;

//测试哈希值
public class demo02 {

    public static void main(String[] args) {

        Student s1 = new Student("zhangsan", 23);
        Student s2 = new Student("zhangsan", 23);

        //未重写hashCode方法,比较两对象地址,计算出的哈希值不同
        System.out.println(s1.hashCode());//356573597
        System.out.println(s2.hashCode());//1735600054

        //重写hashCode方法,比较对象的属性值,属性值相同则哈希值也相同
        System.out.println(s1.hashCode());//-1461067292
        System.out.println(s2.hashCode());//-1461067292

        //有一种小概率情况,即使对象属性不同,计算出的哈希值也想通(哈希碰撞)
        String abc = ("abc");
        String acD = ("acD");
        System.out.println(abc.hashCode());//96354
        System.out.println(acD.hashCode());//96354
    }
}

package com.JinJie.MySet.hashset;

import java.util.HashSet;

//利用hashcode去除重复元素
//创建一个集合存放学生对象,比较属性值,相同则认为是同一个对象
//利用程序遍历输出集合
public class demo03 {

    public static void main(String[] args) {

        HashSet<Student> students = new HashSet<>();
        Student s1 = new Student("zhangsan", 24);
        Student s2 = new Student("zhangsan", 24);
        Student s3 = new Student("lisi", 20);
        Student s4 = new Student("ergou", 21);

        System.out.println(students.add(s1));//true添加成功,false添加失败
        System.out.println(students.add(s2));
        System.out.println(students.add(s3));
        System.out.println(students.add(s4));

        System.out.println(students);
    }
}
 

三、LinkedHashSet

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值