JavaSE基础入门集合(2)

1. Set集合

1.1 Set集合概述和特点【应用】

  • 1.1 Set集合概述和特点【应用】
    • 元素存取无序
    • 没有索引、只能通过迭代器或增强for循环遍历
    • 不能存储重复元素
  • Set集合的基本使用
public class SetDemo {
	public static void main(String[] args){
	//创建对象
	//添加元素
	//不包含重复元素的集合
	//遍历
	for(String s:set){
		System.out.println(s);
	}
  }
 }

1.2 哈希值【理解】

  • 哈希值简介
    是JDK根据对象的地址或者字符串或者数字算出来的int类型的数值

  • 如何获取哈希值
    Object类中的public int hashCode():返回对象的哈希码值

  • 哈希值的特点

    • 同一个对象多次调用hashCode()方法的哈希值是相同的
    • 默认情况下,不同对象的哈希值是不同的。而重写hashCode()方法,可以实现让不同对象的哈希值相同
  • 获取哈希值的代码

    • 学生类
public class Student{
	private String name;
	private int age;
	public Student{
	}
	public Student(String name,int age){
		this.name = name;
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name){
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age){
		this.age=age;
	}
	@overriade
	public int hashCode() {
		return 0;
	}
 }
- 测试类
public class HashDemo{
	public static void main(String[] args) {
	//创建学生对象
	Student s1 = new Student("张三",30);
	
	//同一个对象多次调用hashCode()返回的哈希值是相同的
	System.out.println(s1.hashCode()); //1060830840 
	System.out.println(s1.hashCode()); //1060830840 
	System.out.println("----------------------")
	//默认情况下,不同对象的哈希值是不同的
	//通过方法重写,可以实现不同对象的哈希值是相同的
	System.out.prinltn(s2.hashCode()); //2137211482 
	System.out.println("--------------------");

	System.out.println("hello".hashCode());//99162322
	System.out.println("world".hashCode()); //113318802 
	System.out.println("java".hashCode()); //3254818
	System.out.println("world".hashCode());//113318802 
	System.out.println("-----------------")
   
    //通过方法重写,可以实现不同对象的哈希值是相同的
    System.out.println("张三".hashCode());//1179395 
    System.out.println("李四".hashCode());//1179395 
 

1.3 HashSet集合概述和特点【应用】

  • HashSet集合的特点
    • 底层数据结构是哈希表
    • 对集合的迭代顺序不作任何保证,也就是说不保证存储和取出的元素顺序一致
    • 没有带索引的方法,索引不能使用普通for循环遍历
    • 由于是Set集合,所以是不包含重复元素的集合。
  • HashSet的基本使用
public class HashSetDemo01 {
	public static void main(String[] args) {
	//创建集合对象
	HashSet<String> hs = new HashSet<String>();
	//添加元素
	hs.add("hello");
	hs.add("world");
	hs.add("java");

 	hs.add("world");
	//遍历
	for(String s:hs){
		System.out.println(s);
	}
  }
 }

1.4 HashSet集合保证元素唯一性源码分析【理解】

  • Hash集合保证元素唯一性的原理
    • 1.根据对象的哈希值计算存储位置,如果当前位置没有元素则直接存入。如果当前位置有元素存在,则进入第二步。
    • 2.当前元素的元素和已经存在的元素比较哈希值,如果哈希值不同,则将当前元素进行存储。如果哈希值相同,则进入第三步。
    • 3.通过equals()方法比较两个元素的内容,如果内容不相同,则将当前元素进行存储,如果内容相同,则不存储当前元素
  • HashSet集合保证元素唯一性的图解
    在这里插入图片描述

1.5 常见数据结构之哈希表【理解】

在这里插入图片描述

1.6 HashSet集合存储学生对象并遍历【应用】

1.7 LinkedHashSet集合概述和特点【应用】

2. Set集合排序

2.1 TreeSet集合概述和特点【应用】

2.2 自然排序Comparable的使用【应用】

2.3 比较器排序Comparator的使用【应用】

2.4 成绩排序案例【应用】

2.5不重复的随机数案案例【应用】

3. 泛型

3.1 泛型概述和好处【理解】

3.2 泛型类【应用】

3.3 泛型方法【应用】

3.4 泛型接口【应用】

3.5类型通配符【应用】

4.可变参数

4.1 可变参数【应用】

4.2 可变参数的使用【应用】

原文地址:https://www.cnblogs.com/JhonnyLee/p/13751353.html