java集合-3

简介: -

Set接口

特点:无序、无下标、元素不可重复

方法:全部继承自Collection中的方法

增、删、遍历、判断与collection一致

HashSet

特点

存储结构:哈希表(数组+链表+红黑树)

存储过程(重复依据)

  1. 根据hashCode计算保存的位置,如果位置为空,直接保存,若不为空,进行第二步
  2. 再执行equals方法,如果equals为true,则认为是重复,否则形成链表

不理解

  • 基于HashCode计算元素存放位置
  • 利用31这个质数,减少散列冲突
  • 31提高执行效率31 * i = (i << 5) - i 转为移位操作
  • 当存入元素的哈希码相同时,会调用equals进行确认,如果结果为true,则拒绝后者存入

/**

* @author 伍六七

* @date 2022/8/12 21:49

*/

public class hashset_demo {

   public static void main(String[] args) {

       //新建集合

       HashSet<String> hashSet = new HashSet<String>();



       //添加元素

       hashSet.add("1");

       hashSet.add("1");

       hashSet.add("1");

       hashSet.add("2");

       hashSet.add("3");

       System.out.println(hashSet);//[1, 2, 3]


       //删除元素

       hashSet.remove("1");

       System.out.println(hashSet);//[2, 3]



       //遍历操作

       //1. 增强for

       for(String set:hashSet){

           System.out.print(set);//23

       }


       //2. 迭代器

       Iterator<String> it = hashSet.iterator();

       while(it.hasNext()){

           String s = it.next();

           System.out.printf(s+" ");//2 3

       }



       //判断

       System.out.println(hashSet.contains("2"));//true


       System.out.println(hashSet.isEmpty());//false

   }

}

SortedSet接口

TreeSet

特点

  • 基于排列顺序实现元素不重复
  • 实现SortedSet接口(如果实现该接口需要重写方法),对集合元素自动排序
  • 元素对象的类型必须实现Comparable接口指定排序规则,默认升序
  • 通过CompareTo方法确定是否为重复元素

存储结构:红黑树

常用方法

还是set方法

//创建集合

TreeSet<String> treeSet = new TreeSet<>();


//添加元素

treeSet.add();


//删除元素

treeSet.remove();


//遍历 1. 增强for 2. 迭代器


//判断

treeSet.contains();

补充:TreeSet集合的使用

Comparator 实现定制比较(比较器)

Comparable 可比较的

// 重写compare,算法也用到,也可以用Lambda表达式

@override

public int compare(Person o1, Person o2){

 int n1 = o1.getAge()-o2.getAge();

 int n2 = o1.getName().comareTo(o2.getName());

 return n1 == 0 ? n2 : n1;

}

目录
相关文章
|
6天前
|
Java 容器
java集合框架复习----(1)
这篇文章提供了Java集合框架的复习资料,包括集合的概念、Collection接口的使用,以及如何通过代码示例演示集合的操作,如增加、删除元素,以及遍历集合元素。
java集合框架复习----(1)
|
5天前
|
存储 Java
Java学习笔记 List集合的定义、集合的遍历、迭代器的使用
Java学习笔记 List集合的定义、集合的遍历、迭代器的使用
|
6天前
|
存储 安全 Java
java集合框架复习----(2)List
这篇文章是关于Java集合框架中List集合的详细复习,包括List的特点、常用方法、迭代器的使用,以及ArrayList、Vector和LinkedList三种实现类的比较和泛型在Java中的使用示例。
java集合框架复习----(2)List
|
6天前
|
存储 安全 Java
java集合框架复习----(4)Map、List、set
这篇文章是Java集合框架的复习总结,重点介绍了Map集合的特点和HashMap的使用,以及Collections工具类的使用示例,同时回顾了List、Set和Map集合的概念和特点,以及Collection工具类的作用。
java集合框架复习----(4)Map、List、set
|
11天前
|
存储 算法 Java
14 Java集合(集合框架+泛型+ArrayList类+LinkedList类+Vector类+HashSet类等)
14 Java集合(集合框架+泛型+ArrayList类+LinkedList类+Vector类+HashSet类等)
30 2
14 Java集合(集合框架+泛型+ArrayList类+LinkedList类+Vector类+HashSet类等)
|
6天前
|
存储 Java
java集合框架复习----(3)Set
这篇文章详细介绍了Java集合框架中的Set集合,包括HashSet和TreeSet的特点、实现原理和使用示例,展示了Set集合的无序性、元素唯一性以及如何通过自定义比较器实现元素的排序。
|
6天前
|
存储 安全 Java
java集合框架学习笔记
这篇文章是关于Java集合框架的详细学习笔记,包括集合的概念、使用方式以及List、Set和Map等集合类型的具体实现和特点。
java集合框架学习笔记
|
11天前
|
安全 算法 Java
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)(下)
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)
49 6
|
11天前
|
存储 安全 Java
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)(中)
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)
51 5
|
11天前
|
存储 安全 Java
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)(上)
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)
44 3