Java集合框架详解:从ArrayList到HashMap

Java集合框架详解:从ArrayList到HashMap

大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们来聊聊Java集合框架,从ArrayList到HashMap,详细解析它们的用法和特点。

一、ArrayList详解

ArrayList是Java集合框架中的一个动态数组实现,提供了可变大小的数组功能。它继承了AbstractList,并实现了List接口。以下是一个简单的ArrayList使用示例:

import cn.juwatech.collections.ArrayListDemo;
import java.util.ArrayList;

public class ArrayListDemo {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();

        // 添加元素
        list.add("Apple");
        list.add("Banana");
        list.add("Cherry");

        // 访问元素
        System.out.println("First element: " + list.get(0));

        // 遍历元素
        System.out.println("All elements:");
        for (String fruit : list) {
            System.out.println(fruit);
        }

        // 删除元素
        list.remove("Banana");
        System.out.println("After removal:");
        for (String fruit : list) {
            System.out.println(fruit);
        }
    }
}

ArrayList的优点是支持随机访问,效率高;缺点是插入和删除元素时可能需要移动大量元素,效率较低。

二、LinkedList详解

LinkedList是一个双向链表实现,继承了AbstractSequentialList,并实现了List和Deque接口。适合频繁插入和删除操作的场景。以下是一个LinkedList的使用示例:

import cn.juwatech.collections.LinkedListDemo;
import java.util.LinkedList;

public class LinkedListDemo {
    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList<>();

        // 添加元素
        list.add("Dog");
        list.add("Cat");
        list.add("Rabbit");

        // 访问元素
        System.out.println("First element: " + list.getFirst());

        // 遍历元素
        System.out.println("All elements:");
        for (String animal : list) {
            System.out.println(animal);
        }

        // 删除元素
        list.remove("Cat");
        System.out.println("After removal:");
        for (String animal : list) {
            System.out.println(animal);
        }
    }
}

LinkedList的优点是插入和删除元素效率高;缺点是随机访问效率低。

三、HashSet详解

HashSet是一个基于哈希表的Set集合,它不允许有重复的元素,并且不保证集合的迭代顺序。以下是一个HashSet的使用示例:

import cn.juwatech.collections.HashSetDemo;
import java.util.HashSet;

public class HashSetDemo {
    public static void main(String[] args) {
        HashSet<String> set = new HashSet<>();

        // 添加元素
        set.add("Red");
        set.add("Green");
        set.add("Blue");
        set.add("Red"); // 重复元素不会被添加

        // 遍历元素
        System.out.println("All elements:");
        for (String color : set) {
            System.out.println(color);
        }

        // 检查元素
        System.out.println("Set contains 'Green': " + set.contains("Green"));

        // 删除元素
        set.remove("Green");
        System.out.println("After removal:");
        for (String color : set) {
            System.out.println(color);
        }
    }
}

HashSet的优点是查找、插入和删除元素的效率高;缺点是不能保证元素的顺序。

四、TreeSet详解

TreeSet是一个基于红黑树的Set集合,保证元素的自然排序。以下是一个TreeSet的使用示例:

import cn.juwatech.collections.TreeSetDemo;
import java.util.TreeSet;

public class TreeSetDemo {
    public static void main(String[] args) {
        TreeSet<String> set = new TreeSet<>();

        // 添加元素
        set.add("Orange");
        set.add("Apple");
        set.add("Banana");

        // 遍历元素
        System.out.println("All elements (sorted):");
        for (String fruit : set) {
            System.out.println(fruit);
        }

        // 检查元素
        System.out.println("Set contains 'Apple': " + set.contains("Apple"));

        // 删除元素
        set.remove("Apple");
        System.out.println("After removal:");
        for (String fruit : set) {
            System.out.println(fruit);
        }
    }
}

TreeSet的优点是保证元素有序;缺点是插入、删除和查找元素的效率比HashSet低。

五、HashMap详解

HashMap是一个基于哈希表的Map接口实现,允许键和值为null。它不保证映射的顺序,特别是它不保证顺序在随时间的变化。以下是一个HashMap的使用示例:

import cn.juwatech.collections.HashMapDemo;
import java.util.HashMap;
import java.util.Map;

public class HashMapDemo {
    public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<>();

        // 添加键值对
        map.put("Alice", 30);
        map.put("Bob", 25);
        map.put("Charlie", 35);

        // 访问元素
        System.out.println("Bob's age: " + map.get("Bob"));

        // 遍历元素
        System.out.println("All entries:");
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println(entry.getKey() + ": " + entry.getValue());
        }

        // 删除元素
        map.remove("Charlie");
        System.out.println("After removal:");
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println(entry.getKey() + ": " + entry.getValue());
        }
    }
}

HashMap的优点是查找、插入和删除键值对的效率高;缺点是不能保证键值对的顺序。

六、TreeMap详解

TreeMap是一个基于红黑树的Map接口实现,保证键的自然排序。以下是一个TreeMap的使用示例:

import cn.juwatech.collections.TreeMapDemo;
import java.util.Map;
import java.util.TreeMap;

public class TreeMapDemo {
    public static void main(String[] args) {
        TreeMap<String, Integer> map = new TreeMap<>();

        // 添加键值对
        map.put("Orange", 5);
        map.put("Apple", 3);
        map.put("Banana", 2);

        // 遍历元素
        System.out.println("All entries (sorted):");
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println(entry.getKey() + ": " + entry.getValue());
        }

        // 检查元素
        System.out.println("Map contains 'Apple': " + map.containsKey("Apple"));

        // 删除元素
        map.remove("Apple");
        System.out.println("After removal:");
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println(entry.getKey() + ": " + entry.getValue());
        }
    }
}

TreeMap的优点是保证键的有序性;缺点是插入、删除和查找键值对的效率比HashMap低。

本文著作权归聚娃科技微赚淘客系统开发者团队,转载请注明出处!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值