为了账号安全,请及时绑定邮箱和手机立即绑定

3.4. Java集合框架(List、Set、Map等)

标签:
Java

Java集合框架是Java提供的一套用于存储和操作数据的接口和类。它包括以下几个主要部分:

  1. 接口:集合框架定义了一系列接口,如CollectionListSetMap等。
  2. 实现类:集合框架提供了一些实现这些接口的类,如ArrayListLinkedListHashSetLinkedHashSetHashMapLinkedHashMap等。
  3. 算法:集合框架提供了一些用于操作集合的算法,如排序、搜索等。

我们将分别介绍这些接口和实现类,并给出相应的示例。

1. Collection接口

Collection接口是Java集合框架的根接口,它定义了一些用于操作集合的通用方法。Collection接口有两个主要的子接口:ListSet

以下是Collection接口的一些常用方法:

  • add(E e):添加一个元素。
  • addAll(Collection<? extends E> c):添加一个集合的所有元素。
  • remove(Object o):删除一个元素。
  • removeAll(Collection<?> c):删除一个集合的所有元素。
  • contains(Object o):判断是否包含一个元素。
  • containsAll(Collection<?> c):判断是否包含一个集合的所有元素。
  • size():返回集合的元素个数。
  • isEmpty():判断集合是否为空。
  • clear():清空集合。

2. List接口

List接口是一个有序的、可重复的集合。List接口的主要实现类有ArrayListLinkedList

以下是List接口的一些常用方法:

  • get(int index):获取指定位置的元素。
  • set(int index, E element):设置指定位置的元素。
  • add(int index, E element):在指定位置添加一个元素。
  • remove(int index):删除指定位置的元素。
  • indexOf(Object o):返回一个元素的第一个匹配位置。
  • lastIndexOf(Object o):返回一个元素的最后一个匹配位置。

3. Set接口

Set接口是一个无序的、不可重复的集合。Set接口的主要实现类有HashSetLinkedHashSet

以下是Set接口的一些常用方法(实际上与Collection接口的方法相同,因为Set接口没有添加新的方法):

  • add(E e):添加一个元素。
  • remove(Object o):删除一个元素。
  • contains(Object o):判断是否包含一个元素。
  • size():返回集合的元素个数。
  • isEmpty():判断集合是否为空。
  • clear():清空集合。

4. Map接口

Map接口是一个存储键值对的集合。Map接口的主要实现类有HashMapLinkedHashMap

以下是Map接口的一些常用方法:

  • put(K key, V value):添加一个键值对。
  • get(Object key):根据键获取值。
  • remove(Object key):根据键删除一个键值对。
  • containsKey(Object key):判断是否包含一个键。
  • containsValue(Object value):判断是否包含一个值。
  • size():返回集合的键值对个数。
  • isEmpty():判断集合是否为空。
  • clear():清空集合。

5. 示例

下面是一个使用Java集合框架的示例:

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Set;
import java.util.Map;

public class CollectionExample {
    public static void main(String[] args) {
        // List 示例
        List<String> arrayList = new ArrayList<>();
        arrayList.add("Apple");
        arrayList.add("Banana");
        arrayList.add("Cherry");
        arrayList.add("Banana");
        System.out.println("ArrayList: " + arrayList);

        List<String> linkedList = new LinkedList<>();
        linkedList.add("Apple");
        linkedList.add("Banana");
        linkedList.add("Cherry");
        linkedList.add("Banana");
        System.out.println("LinkedList: " + linkedList);

        // Set 示例
        Set<String> hashSet = new HashSet<>();
        hashSet.add("Apple");
        hashSet.add("Banana");
        hashSet.add("Cherry");
        hashSet.add("Banana");
        System.out.println("HashSet: " + hashSet);

        Set<String> linkedHashSet = new LinkedHashSet<>();
        linkedHashSet.add("Apple");
        linkedHashSet.add("Banana");
        linkedHashSet.add("Cherry");
        linkedHashSet.add("Banana");
        System.out.println("LinkedHashSet: " + linkedHashSet);

        // Map 示例
        Map<String, Integer> hashMap = new HashMap<>();
        hashMap.put("Apple", 1);
        hashMap.put("Banana", 2);
        hashMap.put("Cherry", 3);
        hashMap.put("Banana", 4);
        System.out.println("HashMap: " + hashMap);

        Map<String, Integer> linkedHashMap = new LinkedHashMap<>();
        linkedHashMap.put("Apple", 1);
        linkedHashMap.put("Banana", 2);
        linkedHashMap.put("Cherry", 3);
        linkedHashMap.put("Banana", 4);
        System.out.println("LinkedHashMap: " + linkedHashMap);
    }
}

输出结果:

ArrayList: [Apple, Banana, Cherry, Banana]
LinkedList: [Apple, Banana, Cherry, Banana]
HashSet: [Apple, Banana, Cherry]
LinkedHashSet: [Apple, Banana, Cherry]
HashMap: {Apple=1, Banana=4, Cherry=3}
LinkedHashMap: {Apple=1, Banana=4, Cherry=3}

这个示例演示了如何使用ArrayListLinkedListHashSetLinkedHashSetHashMapLinkedHashMap类。你可以看到,List接口允许添加重复元素,而Set接口不允许。此外,HashMapHashSet是无序的,而LinkedHashMapLinkedHashSet是有序的。

希望这个示例和解释能帮你更好地理解Java集合框架。如果你有任何疑问,请随时向我提问。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
移动开发工程师
手记
粉丝
2
获赞与收藏
17

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消