2025年【java笔记】java中的常用容器

【java笔记】java中的常用容器本文参考了知乎作者 Hello 浩辰 的 Java 容器详解 概述和菜鸟教程的相关文章 一 常用容器 java 容器分为两大部分 Collection 和 Map Collection 是单个元素的集合 又可以分为 List Queue 和 Set Map 用来存储一组键值对 又可以分为 HashMap 和 TreeMap 二 List 列表

大家好,我是讯享网,很高兴认识大家。

本文参考了知乎作者“Hello浩辰”的Java容器详解Ⅰ——概述和菜鸟教程的相关文章。

一、常用容器

img
讯享网

java容器分为两大部分:Collection和Map。Collection是单个元素的集合,又可以分为List、Queue和Set。Map用来存储一组键值对,又可以分为HashMap和TreeMap。

二、List列表

List的特点就是所有的元素是可以重复的。

1. ArrayList

ArrayList是一个可以动态增长的数组, ArrayList由于底层是使用数组实现的,所以随机访问速度快,插入删除较慢。

(1) 常用方法:

  • add():添加元素
  • addAll():将集合中的所有元素添加到ArrayList中
  • clear():清空元素
  • contains():判断元素是否在ArrayList中
  • get():根据索引获取元素
  • remove():根据索引删除元素
  • size():返回ArrayList大小
  • set():根据索引修改元素

(2) 实例:

package ecnu.cn; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; public class MyTest { 
    public static void main(String[] args) { 
    ArrayList<String> sites = new ArrayList<String>(); // 增加元素 sites.add("Zhihu"); sites.add("Google"); sites.add("Taobao"); sites.add("Runoob"); sites.add("Temp"); // 修改元素 sites.set(2, "Tianmao"); // 删除元素 sites.remove(4); // 获取元素 System.out.println("下标为1的元素:" + sites.get(1)); // 获取大小 System.out.println("size: " + sites.size()); // 判断元素是否存在 System.out.println("Taobao是否存在:"+sites.contains("Taobao")); // 使用迭代器遍历 Iterator<String> it = sites.iterator(); while (it.hasNext()) { 
    System.out.print(it.next() + " "); } System.out.println("\n"); // 普通遍历 for (int i = 0; i < sites.size(); i++) { 
    System.out.print(sites.get(i) + " "); } // 排序 Collections.sort(sites); // 遍历 for (String site : sites) { 
    System.out.print(site + " "); } System.out.println("\n"); // 清空 sites.clear(); System.out.println("size: " + sites.size()); } } 

讯享网

(3) 使用场景:

  • 频繁访问列表中的某一个元素。
  • 只需要在列表末尾进行添加和删除元素操作。

2. LinkedList

LinkedList是使用双向链表实现的,在列表中插入和删除速度快,但是查找需要遍历整个链表,速度较慢。使用LinkedList可以实现很多队列、栈的数据结构。

(1) 常用方法:

  • add():添加元素
  • addFirst():在头部添加元素
  • addLast:在尾部添加元素
  • addAll():将集合中的所有元素添加到LilnkedList中
  • clear():清空元素
  • contains():判断元素是否在LilnkedList中
  • get():根据索引获取元素
  • getFirst():获取头部元素
  • getLast():获取尾部元素
  • remove():根据索引删除元素
  • removeFirst():删除头部元素
  • removeLast():删除尾部元素
  • size():返回LilnkedList大小
  • set():根据索引修改元素

(2) 实例:

讯享网package ecnu.cn; import java.util.Collections; import java.util.Iterator; import java.util.LinkedList; public class MyTest { 
    public static void main(String[] args) { 
    LinkedList<String> sites = new LinkedList<>(); // 增加元素 sites.add("Zhihu"); sites.add("Google"); sites.add("Taobao"); // 在头部添加 sites.addFirst("Runoob"); // 在尾部添加 sites.addLast("Temp"); // 修改元素 sites.set(2, "Tianmao"); // 普通遍历 // size()获取大小 for (int i = 0; i < sites.size(); i++) { 
    // 获取元素 System.out.print(sites.get(i) + " "); } System.out.println("\n"); // 删除元素 sites.remove(4); // 删除头部元素 sites.removeFirst(); // 删除尾部元素 sites.removeLast(); // 获取first元素 System.out.println("First:" + sites.getFirst()); // 获取last元素 System.out.println("Last: "+sites.getLast()); // 判断元素是否存在 System.out.println("Taobao是否存在:"+sites.contains("Taobao")); // 使用迭代器遍历 Iterator<String> it = sites.iterator(); while (it.hasNext()) { 
    System.out.print(it.next() + " "); } System.out.println("\n"); // 排序 Collections.sort(sites); // 遍历 System.out.println("排序后:"); for (String site : sites) { 
    System.out.print(site + " "); } System.out.println("\n"); // 清空 sites.clear(); System.out.println("size: " + sites.size()); } } 

(3) 使用场景:

  • 你需要通过循环迭代来访问列表中的某些元素。
  • 需要频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作。

3. Vector

Vector是一个已经被弃用的类,因为他是线程同步的,而我们平时使用的时候都是非同步的,使用同步的坏处就是会在一个记录上加锁,防止多个程序访问同一条数据导致数据不同步。这样会导致访问速度变慢。

三、Queue队列

队列是一个满足“先进先出”的数据结构。

1. LinkedList

LinkedList提供了方法支持队列操作,并且实现了Queue接口,所以LinkedList是队列的一种实现,可以通过LinkedList向上转型为Queue。

2. PriorityQueue

PriorityQueue是优先级队列。

四、Set集合

集合中的元素不可以重复。

1. HashSet

  • HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。

  • HashSet 允许有 null 值。
  • HashSet 是无序的,即不会记录插入的顺序。
  • HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的。 您必须在多线程访问时显式同步对 HashSet 的并发访问。
  • HashSet 实现了 Set 接口。

(1) 常用方法

  • add():添加元素
  • addAll():将集合中的所有元素添加到HashSet中
  • clear():清空元素
  • contains():判断元素是否在HashSet中
  • remove():根据索引删除元素
  • size():返回HashSet大小

(2) 实例

package ecnu.cn; import java.util.Collections; import java.util.HashSet; import java.util.Iterator; public class MyTest { 
    public static void main(String[] args) { 
    HashSet<String> sites = new HashSet<>(); // 增加元素 sites.add("Zhihu"); sites.add("Google"); sites.add("Taobao"); sites.add("Runoob"); sites.add("Temp"); // 删除元素 sites.remove(4); // 判断元素是否存在 System.out.println("Taobao是否存在:"+sites.contains("Taobao")); // 使用迭代器遍历 Iterator<String> it = sites.iterator(); while (it.hasNext()) { 
    System.out.print(it.next() + " "); } System.out.println("\n"); // 遍历 for (String site : sites) { 
    System.out.print(site + " "); } System.out.println("\n"); // 清空 sites.clear(); System.out.println("size: " + sites.size()); } } 

2. TreeSet

TreeSet底层使用的是红黑树。

五、Map映射

Map是使用键值对存储的一种结构,所以在处理列如单词统计等方面是杀手锏。

1. HashMap

HashMap更适合查找、删除、插入。

  • HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。
  • HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。
  • HashMap 是无序的,即不会记录插入的顺序。
  • HashMap 继承于AbstractMap,实现了 Map、Cloneable、java.io.Serializable 接口。

(1) 常用方法

  • clear():清空HashMap
  • size():获取大小
  • put():添加键值对
  • putAll():将所有键值对添加到HashMap中
  • containKey():是否包含key
  • containValue():是否包含value
  • get():根据key获取value
  • keySet():获取key的集合
  • values():获取所有value

(2) 实例

讯享网package ecnu.cn; import java.util.HashMap; import java.util.Iterator; public class MyTest { 
    public static void main(String[] args) { 
    HashMap<Integer, String> sites = new HashMap(); // 增加元素 sites.put(1, "Zhihu"); sites.put(2, "Google"); sites.put(3, "Taobao"); sites.put(4, "Runoob"); sites.put(5, "Temp"); // 删除元素 sites.remove(4); // 是否包含key System.out.println("是否包含为5的key:"+sites.containsKey("5")); // 是否包含value System.out.println("是否包含为Taobao的value:"+sites.containsValue("Taobao")); // 遍历 // 获取所有key的集合 for (Integer key : sites.keySet()) { 
    // 根据key获取value System.out.println("key: " + key + " value: " + sites.get(key)); } System.out.println(); // 遍历所有的值 for (String value : sites.values()) { 
    System.out.print(value + " "); } System.out.println("\n"); // 清空 sites.clear(); System.out.println("size: " + sites.size()); } } 

2. TreeMap

TreeMap更适合遍历。

小讯
上一篇 2025-02-28 14:07
下一篇 2025-01-18 10:45

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/120729.html