Java--集合

集合框架类结构图

List接口

ArrayList(语法格式)

方法 描述
add() 将元素插入到指定位置的 arraylist 中
addAll() 添加集合中的所有元素到 arraylist 中
clear() 删除 arraylist 中的所有元素
clone() 复制一份 arraylist
contains() 判断元素是否在 arraylist
get() 通过索引值获取 arraylist 中的元素
indexOf() 返回 arraylist 中元素的索引值
removeAll() 删除存在于指定集合中的 arraylist 里的所有元素
remove() 删除 arraylist 里的单个元素
size() 返回 arraylist 里元素数量
isEmpty() 判断 arraylist 是否为空
subList() 截取部分 arraylist 的元素
set() 替换 arraylist 中指定索引的元素
sort() 对 arraylist 元素进行排序
toArray() 将 arraylist 转换为数组
toString() 将 arraylist 转换为字符串
ensureCapacity() 设置指定容量大小的 arraylist
lastIndexOf() 返回指定元素在 arraylist 中最后一次出现的位置
retainAll() 保留 arraylist 中在指定集合中也存在的那些元素
containsAll() 查看 arraylist 是否包含指定集合中的所有元素
trimToSize() 将 arraylist 中的容量调整为数组中的元素个数
removeRange() 删除 arraylist 中指定索引之间存在的元素
replaceAll() 将给定的操作内容替换掉数组中每一个元素
removeIf() 删除所有满足特定条件的 arraylist 元素
forEach() 遍历 arraylist 中每一个元素并执行特定操作
复制代码
import java.util.ArrayList; // 引入 ArrayList 类

ArrayList<E> objectName =new ArrayList<>();  // 初始化

添加元素到ArrayList中

复制代码
import java.util.ArrayList;
import java.util.Collections;
public class RunTest {
    public static void main(String[] args) {
        //添加元素到ArrayList中使用add()方法
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("curry");
        sites.add("durant");
        sites.add("rose");
        System.out.println(sites);
        sites.set(1,"Kobe");//修改第二个元素为kobe
        System.out.println(sites.get(1));//访问集合中第二个元素,get(index)数组中的索引从0开始
        sites.remove(1);//删除第二个元素
        System.out.println(sites.size());
        Collections.sort(sites);//排序方法使用Collections.sort()方法
        //for-each迭代元素
          for(String i : sites){
            System.out.println(i);
        }
        //for循环迭代数组中的元素
        for (int i = 0;i<sites.size();i++){
            System.out.println(sites.get(i));
        }
    }
}

访问ArrayList中元素使用get()方法

修改ArrayList元素使用set()方法

删除ArrayList元素使用remove()方法

计算ArrayList元素使用size()方法

for循环for-each循环迭代元素

特点,底层数据结构,常用方法该类也是实现了List的接口,实现了可变大小的数组,随机访问和遍历元素时,提供更好的性能。该类也是非同步的,在多线程的情况下不要使用。ArrayList 增长当前长度的50%,插入删除效率低。

LinkedList

该类实现了List接口,允许有null(空)元素。主要用于创建链表数据结构,该类没有同步方法,如果多个线程同时访问一个List,则必须自己实现访问同步,解决方法就是在创建List时候构造一个同步的List。例如:

复制代码
List list=Collections.synchronizedList(newLinkedList(...));

LinkedList 查找效率低。

Vector

该类和ArrayList非常相似,但是该类是同步的,可以用在多线程的情况,该类允许设置默认的增长长度,默认扩容方式为原来的2倍。

Stack

栈是Vector的一个子类,它实现了一个标准的后进先出的栈。

Set接口

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

HashSet 允许有 null 值。

HashSet 是无序的,即不会记录插入的顺序。

HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的。 您必须在多线程访问时显式同步对 HashSet 的并发访问。HashSet 实现了 Set 接口。

添加add(),删除remove(),计算集合中元素个数size(),迭代与ArrayList方法一样此外将介绍几种特有方法

删除集合中所有元素可以使用 clear 方法 使用 contains() 方法来判断元素是否存在于集合当中

示例如下:

复制代码
import java.util.HashSet;
public class HashSetTest {
    public static void main(String[] args) {
        HashSet<String> sites = new HashSet<String>();
        sites.add("Google");
        sites.add("RunOb");
        sites.add("TaoBao");
        sites.add("ZhiHu");
        System.out.println(sites.contains("TaoBao"));
        sites.add("RunOb");// 重复的元素不会被添加
        System.out.println(sites.size());
        //for-each遍历
        for(String i :sites){
            System.out.println(i);
        }
        // 删除元素,删除成功返回 true,否则为 false
        sites.remove("TaoBao");
        //删除集合中所有元素
        sites.clear();
        System.out.println(sites);
    }
}

Queue接口

非阻塞队列

LinkedList

ArrayDeque

PriorityQueue

ConcurrentLinkedQueue

阻塞队列

ArrayBlockingQueue(掌握)

LinkedBlockingQueue

PriorityBlockingQueue

DelayQueue

SynchronousQueue

LinkedTransferQueue

LinkedBlockingDeque

Map接口

HashMap(掌握)

是一个散列表,它存储的内容是键值对(key-value)映射。
该类实现了Map接口,根据键的HashCode值存储数据,具有很快的访问速度,最多允许一条记录的键为null,不支持线程同步。

TreeMap(掌握) 继承了AbstractMap,并且使用一颗树。

LinkedHashMap 继承于HashMap,使用元素的自然顺序对元素进行排序

ConcurrentHashMap

IdentifyHashMap 继承AbstractMap类,比较文档时使用引用相等。

HashTable(过时)j 是Dictionary(字典) 类的子类,位于 java.util 包中

遍历Map

复制代码
// 使用 entrySet 遍历  
for (Map.Entry<String, Integer> entry : map.entrySet()) {  
    System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());  
}  
  
// 使用 keySet 和 values 遍历  
for (String key : map.keySet()) {  
    System.out.println("Key = " + key);  
}  
  
for (Integer value : map.values()) {  
    System.out.println("Value = " + value);  
}  
  
// Java 8 引入的 forEach 方法  
map.forEach((key, value) -> System.out.println("Key = " + key + ", Value = " + value));

集合中元素排序

集合泛型

集合遍历

for循环

for each循环

iterator迭代器 该方法可以不用担心在遍历的过程中会超出集合的长度。

复制代码
import java.util.*;
 
public class Test{
 public static void main(String[] args) {
     List<String> list=new ArrayList<String>();
     list.add("Hello");
     list.add("World");
     list.add("HAHAHAHA");
     //第一种遍历方法使用 For-Each 遍历 List
     for (String str : list) {            //也可以改写 for(int i=0;i<list.size();i++) 这种形式
        System.out.println(str);
     }
 
     //第二种遍历,把链表变为数组相关的内容进行遍历
     String[] strArray=new String[list.size()];
     list.toArray(strArray);
     for(int i=0;i<strArray.length;i++) //这里也可以改写为  for(String str:strArray) 这种形式
     {
        System.out.println(strArray[i]);
     }
     
    //第三种遍历 使用迭代器进行相关遍历
     
     Iterator<String> ite=list.iterator();
     while(ite.hasNext())//判断下一个元素之后有值
     {
         System.out.println(ite.next());
     }
 }
}

Stream流处理

集合工具类

Properties类

Collections类

Arrays类

posted @   curry库-04049  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示