Java入门—集合

简介: 应用场景:无法预测存储数据的数量同时存储具有一对一关系的数据需要进行数据的增删数据重复问题集合概览image.pngList(列表)List是元素有序并且可以重复的集合,称为序列。

应用场景:

  1. 无法预测存储数据的数量
  2. 同时存储具有一对一关系的数据
  3. 需要进行数据的增删
  4. 数据重复问题

集合概览

img_0f1ed916e37dfc46075d7e1a8742421f.png
image.png

List(列表)

  • List是元素有序并且可以重复的集合,称为序列。
  • List可以精确控制每个元素的插入位置,或者删除某个为止的元素。
  • List两个主要实现类是ArrayList 和 LinkedList。

ArrayList 和 LinkedList 两者的数据存储方式是不同的:

  • ArrayList :和数组相似,但是长度可以动态增长,在内存中的一片连续存储空间进行存储
  • LinkedList:本身是链表

Set

无序、不重复集合。

HashSet
  • HashSet是Set的一个重要实现类,称为哈希集。
  • HashSet中元素无需并且不可重复。
  • HashSet中只允许一个null元素。
  • 具有良好的存取和查找性能。

HashSet底层是hashMap。

遍历HashSet需要使用迭代器方法。

Iterator(迭代器)
  • Iterator接口可以以统一的方式对各种集合元素进行遍历
  • hasNext()方法检测集合中是否还有下一个元素(返回ture或false)
  • next() 方法返回集合中的下一个元素
import java.util.HashSet;
import java.util.Set;
import java.util.Iterator;

public class TestIterator {
    public static void main(String[] args){
        Set s = new HashSet();
        s.add("allen");
        s.add("ming");
        s.add("hello");
        Iterator it = s.iterator();
        while (it.hasNext()){
            System.out.println(it.next());
        }

    }
}

Map

  • Map中的数据是以键值对(key-value)形式存储的
  • key-value以Entry类型的对象实例存在
  • 通过key可以快速查找value值
  • 不能包含重复的建(key值必须唯一)
HashMap
  • 基于哈希表的Map接口实现
  • 允许使用null值和null键值
  • HashMap中Entry对象时无序排列的

总结

ArrayList
  • 底层由数组实现
  • 元素有序且可以重复
  • 可以动态增长,以满足应用程序的需求
  • 元素值可以为null
HashSet
  • 元素无序并且不可以重复
  • 只允许一个null元素
HashMap
  • 键不能重复
  • 允许使用null值和null键
  • HashMap中的Entry对象是无序排列的
Iterator(迭代器)
  • Iterator接口以统一的方式对各种集合元素进行遍历


    img_58b1a3e3555955498d5d9788439549ae.png
    image.png
目录
相关文章
|
4天前
|
存储 安全 算法
【常见集合】Java 常见集合重点解析
【常见集合】Java 常见集合重点解析
8 0
|
1天前
|
安全 Java 容器
Java一分钟之-高级集合框架:并发集合(Collections.synchronizedXXX)
【5月更文挑战第18天】Java集合框架的`Collections.synchronizedXXX`方法可将普通集合转为线程安全,但使用时需注意常见问题和易错点。错误的同步范围(仅同步单个操作而非迭代)可能导致并发修改异常;错误地同步整个集合类可能引起死锁;并发遍历和修改集合需使用`Iterator`避免`ConcurrentModificationException`。示例代码展示了正确使用同步集合的方法。在复杂并发场景下,推荐使用`java.util.concurrent`包中的并发集合以提高性能。
9 3
|
1天前
|
Java 开发者
Java一分钟之-高级集合框架:优先队列(PriorityQueue)
【5月更文挑战第18天】`PriorityQueue`是Java集合框架中的无界优先队列,基于堆数据结构实现,保证队头元素总是最小。常见操作包括`add(E e)`、`offer(E e)`、`poll()`和`peek()`。元素排序遵循自然排序或自定义`Comparator`。常见问题包括错误的排序逻辑、可变对象排序属性修改和混淆`poll()`与`peek()`。示例展示了自然排序和使用`Comparator`的排序方式。正确理解和使用`PriorityQueue`能提升应用性能。
13 6
|
1天前
|
存储 Java
Java一分钟之-高级集合框架:Queue与Deque接口
【5月更文挑战第18天】本文探讨Java集合框架中的`Queue`和`Deque`接口,两者都是元素序列的数据结构。`Queue`遵循FIFO原则,主要操作有`add/remove/element/peek`,空队列操作会抛出`NoSuchElementException`。`Deque`扩展`Queue`,支持首尾插入删除,同样需注意空`Deque`操作。理解并正确使用这两个接口,结合具体需求选择合适数据结构,能提升代码效率和可维护性。
11 4
|
2天前
|
存储 Java 容器
Java一分钟之-高级集合框架:LinkedList与TreeSet
【5月更文挑战第17天】这篇博客对比了Java集合框架中的LinkedList和TreeSet。LinkedList是双向链表,适合中间插入删除,但遍历效率低且占用空间大;TreeSet基于红黑树,保证元素有序且不重复,插入删除速度较LinkedList慢但查找快。选择时需根据操作需求和性能考虑。
12 2
|
2天前
|
算法 Java C++
刷题两个月,从入门到字节跳动offer丨GitHub标星16k+,美团Java面试题
刷题两个月,从入门到字节跳动offer丨GitHub标星16k+,美团Java面试题
|
3天前
|
算法 Java Python
保姆级Java入门练习教程,附代码讲解,小白零基础入门必备
保姆级Java入门练习教程,附代码讲解,小白零基础入门必备
|
3天前
|
存储 算法 Java
Java 集合框架
5月更文挑战第10天
|
4天前
|
SQL Java 关系型数据库
零基础轻松入门Java数据库连接(JDBC)
零基础轻松入门Java数据库连接(JDBC)
13 0
|
4天前
|
存储 安全 Java
Java一分钟之-集合框架进阶:Set接口与HashSet
【5月更文挑战第10天】本文介绍了Java集合框架中的`Set`接口和`HashSet`类。`Set`接口继承自`Collection`,特征是不允许重复元素,顺序不确定。`HashSet`是`Set`的实现,基于哈希表,提供快速添加、删除和查找操作,但无序且非线程安全。文章讨论了`HashSet`的特性、常见问题(如元素比较规则、非唯一性和线程安全性)以及如何避免这些问题,并提供了代码示例展示基本操作和自定义对象的使用。理解这些概念和注意事项能提升代码效率和可维护性。
12 0