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

一、Set集合特点

Java集合进阶——Set系列集合_第1张图片

练习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 set = new HashSet<>();

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

        //1,迭代器遍历
        Iterator 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

Java集合进阶——Set系列集合_第2张图片

 Java集合进阶——Set系列集合_第3张图片

哈希值练习:

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
    }
}
Java集合进阶——Set系列集合_第4张图片

Java集合进阶——Set系列集合_第5张图片

package com.JinJie.MySet.hashset;

import java.util.HashSet;

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

    public static void main(String[] args) {

        HashSet 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

Java集合进阶——Set系列集合_第6张图片

Java集合进阶——Set系列集合_第7张图片

你可能感兴趣的:(java,开发语言)