Java编程集合之HashSet+TreeSet

简介: 1.集合的应用 集合就是一个小容器 增删改查 2.集合使用的情形 各自集合的特点 3.底层原理 数据结构的存储方式 4.自己尝试实现

知识回顾

集合

   Collection  Map

   以value形式存储  以key-value形式存储

   List    Queue    Set

   有序可重复        无序无重复 key无序无重复value无序可重复

   ArrayList        HashSet HashMap

   Vector         TreeSet TreeMap

   Stack(LIFO)

   LinkedList

   add()         add()

   remove()         remove()

   set()

   get()         iterator()

   size()                size()

   1.集合的应用

集合就是一个小容器    增删改查

   2.集合使用的情形

各自集合的特点

   3.底层原理

数据结构的存储方式

   4.自己尝试实现

Collection 以value形式存在

   Set  无序无重复

   1.具体的实现类

HashSet

TreeSet

   2.基本的使用

   3.无序   无重复

无序:我们使用集合存放元素的顺序  集合内取出来的顺序不一致

集合本身是有自己的算法排布顺序  hash算法

HashSet---->(HashMap (数组+链表) 散列表 临接连表)

   1.java.util

   2.如何创建对象   无参数  有参数

   3.集合容器的基本使用

       增删改查

       boolean = add(value)   addAll(collection c)   retainAll   removeAll

       boolean = remove(Object)

       没有修改方法

       iterator()  获取一个迭代器对象

       size()

   4.无重复的原则

       首先通过String类型和Person类型存储

       大概猜测  无重复的原则  利用equals方法进行比较

       如果我们想要让Person对象的name一致 认为是同一个对象

       我们可以重写equals方法

       重写了equals方法  发现还没有产生无重复的效果

       证明可能原则不止equals一个方法这么简单

       还有另一个规则同时起着作用 hashCode方法  int

       五个Person对象只剩一个   第一次存储的   还是最后一次存储

       set集合是发现重复的元素 拒绝存入  存储的是第一个

       TreeSet-----(TreeMap 二叉树 利用Node(left item right))

       无序无重复  java.util

       无参数构造方法    带Collection构造方法

       基本常用方法

           add(E e)  iterator()  remove(E e)  没有修改  size()

       无重复的规则是如何实现的

       treeSet集合本身有顺序   我们指的无序存入的和取出来的不一致

       compareTo---->String类  按照字母的自然顺序排布(Unicode)

       如果想要把自己写的类型 比如Person对象存入TreeSet集合里

       不能随意的存储 需要让自己写的类先实现Comparable接口

目录
相关文章
|
8天前
|
Java 开发者
Java多线程编程中的常见误区与最佳实践####
本文深入剖析了Java多线程编程中开发者常遇到的几个典型误区,如对`start()`与`run()`方法的混淆使用、忽视线程安全问题、错误处理未同步的共享变量等,并针对这些问题提出了具体的解决方案和最佳实践。通过实例代码对比,直观展示了正确与错误的实现方式,旨在帮助读者构建更加健壮、高效的多线程应用程序。 ####
|
14天前
|
JSON Java Apache
非常实用的Http应用框架,杜绝Java Http 接口对接繁琐编程
UniHttp 是一个声明式的 HTTP 接口对接框架,帮助开发者快速对接第三方 HTTP 接口。通过 @HttpApi 注解定义接口,使用 @GetHttpInterface 和 @PostHttpInterface 等注解配置请求方法和参数。支持自定义代理逻辑、全局请求参数、错误处理和连接池配置,提高代码的内聚性和可读性。
|
16天前
|
安全 Java 编译器
JDK 10中的局部变量类型推断:Java编程的简化与革新
JDK 10引入的局部变量类型推断通过`var`关键字简化了代码编写,提高了可读性。编译器根据初始化表达式自动推断变量类型,减少了冗长的类型声明。虽然带来了诸多优点,但也有一些限制,如只能用于局部变量声明,并需立即初始化。这一特性使Java更接近动态类型语言,增强了灵活性和易用性。
95 53
|
7天前
|
Java 开发者
Java多线程编程的艺术与实践####
本文深入探讨了Java多线程编程的核心概念、应用场景及实践技巧。不同于传统的技术文档,本文以实战为导向,通过生动的实例和详尽的代码解析,引领读者领略多线程编程的魅力,掌握其在提升应用性能、优化资源利用方面的关键作用。无论你是Java初学者还是有一定经验的开发者,本文都将为你打开多线程编程的新视角。 ####
|
6天前
|
存储 安全 Java
Java多线程编程中的并发容器:深入解析与实战应用####
在本文中,我们将探讨Java多线程编程中的一个核心话题——并发容器。不同于传统单一线程环境下的数据结构,并发容器专为多线程场景设计,确保数据访问的线程安全性和高效性。我们将从基础概念出发,逐步深入到`java.util.concurrent`包下的核心并发容器实现,如`ConcurrentHashMap`、`CopyOnWriteArrayList`以及`BlockingQueue`等,通过实例代码演示其使用方法,并分析它们背后的设计原理与适用场景。无论你是Java并发编程的初学者还是希望深化理解的开发者,本文都将为你提供有价值的见解与实践指导。 --- ####
|
9天前
|
安全 Java 开发者
Java多线程编程中的常见问题与解决方案
本文深入探讨了Java多线程编程中常见的问题,包括线程安全问题、死锁、竞态条件等,并提供了相应的解决策略。文章首先介绍了多线程的基础知识,随后详细分析了每个问题的产生原因和典型场景,最后提出了实用的解决方案,旨在帮助开发者提高多线程程序的稳定性和性能。
|
15天前
|
存储 安全 Java
Java多线程编程的艺术:从基础到实践####
本文深入探讨了Java多线程编程的核心概念、应用场景及其实现方式,旨在帮助开发者理解并掌握多线程编程的基本技能。文章首先概述了多线程的重要性和常见挑战,随后详细介绍了Java中创建和管理线程的两种主要方式:继承Thread类与实现Runnable接口。通过实例代码,本文展示了如何正确启动、运行及同步线程,以及如何处理线程间的通信与协作问题。最后,文章总结了多线程编程的最佳实践,为读者在实际项目中应用多线程技术提供了宝贵的参考。 ####
|
12天前
|
监控 安全 Java
Java中的多线程编程:从入门到实践####
本文将深入浅出地探讨Java多线程编程的核心概念、应用场景及实践技巧。不同于传统的摘要形式,本文将以一个简短的代码示例作为开篇,直接展示多线程的魅力,随后再详细解析其背后的原理与实现方式,旨在帮助读者快速理解并掌握Java多线程编程的基本技能。 ```java // 简单的多线程示例:创建两个线程,分别打印不同的消息 public class SimpleMultithreading { public static void main(String[] args) { Thread thread1 = new Thread(() -> System.out.prin
|
14天前
|
存储 缓存 安全
在 Java 编程中,创建临时文件用于存储临时数据或进行临时操作非常常见
在 Java 编程中,创建临时文件用于存储临时数据或进行临时操作非常常见。本文介绍了使用 `File.createTempFile` 方法和自定义创建临时文件的两种方式,详细探讨了它们的使用场景和注意事项,包括数据缓存、文件上传下载和日志记录等。强调了清理临时文件、确保文件名唯一性和合理设置文件权限的重要性。
37 2
|
14天前
|
Java
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式。本文介绍了 Streams 的基本概念和使用方法,包括创建 Streams、中间操作和终端操作,并通过多个案例详细解析了过滤、映射、归并、排序、分组和并行处理等操作,帮助读者更好地理解和掌握这一重要特性。
25 2
下一篇
无影云桌面