Java常用集合框架及对应方法

ArrayList

        ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制。

import java.util.ArrayList; // 引入 ArrayList 类

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

//E: 泛型数据类型,用于设置对象名 (objectName) 的数据类型,只能为引用数据类型

LinkedList

        链表(Linked list):常见的基础数据结构,是一种线性表,非线性的顺序存储数据,每一个节点里存到下一个节点的地址。

        LinkedList(链表) 类似于 ArrayList,是一种常用的数据容器。

        与 ArrayList 相比,LinkedList 的增加和删除的操作效率更高,而查找和修改的操作效率较低。

以下情况使用 ArrayList :

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

以下情况使用 LinkedList :

  • 需要通过循环迭代来访问列表中的某些元素。
  • 需要频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作。
// 引入 LinkedList 类
import java.util.LinkedList; 

LinkedList<E> list = new LinkedList<E>();   // 普通创建方法

LinkedList<E> list = new LinkedList(Collection<? extends E> c); // 使用集合创建链表

HashSet

        基于 HashMap 实现,是一个不允许有重复元素的集合,且无序,即不会记录插入的顺序,允许有 null 值。

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

        HashSet 中的元素实际上是对象,一些常见的基本类型可以使用它的包装类。

import java.util.HashSet; // 引入 HashSet 类

HashSet<String> sites = new HashSet<String>(); //创建一个 HashSet 对象 sites,用于保存字符串元素

HashMap

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

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

        HashMap 中的元素实际上是对象,一些常见的基本类型可以使用它的包装类。

import java.util.HashMap; // 引入 HashMap 类

HashMap<Integer, String> Sites = new HashMap<Integer, String>(); // 创建一个 HashMap 对象 Sites, 整型(Integer)的 key 和字符串(String)类型的 value

Iterator

        Iterator(迭代器):不是一个集合,而是 Java 集合框架中的一种机制,一种用于遍历集合(如列表、集合和映射等)的接口。提供一种统一的方式来访问集合中的元素,而不需要了解底层集合的具体实现细节,可用于迭代 ArrayList 和 HashSet 等集合。

        Iterator 是 Java 迭代器最简单的实现。

迭代器接口定义了几个方法,最常用的是以下三个:

  • next() - 返回迭代器的下一个元素,并将迭代器的指针移到下一个位置。

  • hasNext() - 用于判断集合中是否还有下一个元素可以访问。

  • remove() - 从集合中删除迭代器最后访问的元素(可选操作)。

import java.util.Iterator; // 引入 Iterator 类

获取一个迭代器: 

// 引入 ArrayList 和 Iterator 类
import java.util.ArrayList;
import java.util.Iterator;

public class RunoobTest {
    public static void main(String[] args) {

        // 创建集合
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("Runoob");
        sites.add("Taobao");
        sites.add("Zhihu");

        // 获取迭代器
        Iterator<String> it = sites.iterator();

        // 输出集合中的第一个元素
        System.out.println(it.next());  //Google
    }
}

循环集合元素:

// 引入 ArrayList 和 Iterator 类
import java.util.ArrayList;
import java.util.Iterator;

public class RunoobTest {
    public static void main(String[] args) {

        // 创建集合
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("Runoob");
        sites.add("Taobao");
        sites.add("Zhihu");

        // 获取迭代器
        Iterator<String> it = sites.iterator();

        // 输出集合中的所有元素
        while(it.hasNext()) {
            System.out.println(it.next()); // Google Runoob Taobao Zhihu
        }
    }
}

删除元素:

// 引入 ArrayList 和 Iterator 类
import java.util.ArrayList;
import java.util.Iterator;

public class RunoobTest {
    public static void main(String[] args) {
        ArrayList<Integer> numbers = new ArrayList<Integer>();
        numbers.add(12);
        numbers.add(8);
        numbers.add(2);
        numbers.add(23);
        Iterator<Integer> it = numbers.iterator();
        while(it.hasNext()) {
            Integer i = it.next();
            if(i < 10) {  
                it.remove();  // 删除小于 10 的元素
            }
        }
        System.out.println(numbers); // [12,23]
    }
}

注:Java 迭代器是一种单向遍历机制,即只能从前往后遍历集合中的元素,不能往回遍历。同时,在使用迭代器遍历集合时,不能直接修改集合中的元素,而是需要使用迭代器的 remove() 方法来删除当前元素。

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值