Set、Collections、Map和集合嵌套

目录

Java集合框架概述

Set集合

HashSet

LinkedHashSet

TreeSet

Map集合

Map集合常用API

get(Object key) - 根据指定的键返回对应的值。如果Map中不包含该键,则返回null。

values() - 返回Map中所有值的集合。同keySet()一样,这也是一个视图。

遍历方式

1. 键找值方式

2. 键值对方式

3. Lambda表达式(JDK 8+)

综合案例

HashMap

LinkedHashMap

TreeMap

集合工具类 Collections

模拟斗地主游戏

1. 创建牌的模型 - Card类

2. 初始化和洗牌 - GameDemo类

3. 发牌和排序

4. 看牌

集合嵌套


Java集合框架概述

Java集合框架提供了一组用于存储和操作数据的类和接口,主要分为两大体系:Collection接口体系和Map接口体系。Collection包括ListSetQueue,而Map则用于存储键值对。

Set集合

Set接口是一个不包含重复元素的集合。主要实现类有HashSetLinkedHashSetTreeSet。这些集合没有索引,因此不能通过索引进行访问。

HashSet

HashSet基于哈希表实现,特点是无序、元素不重复。

import java.util.HashSet;
import java.util.Set;

public class HashSetExample {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();
        set.add("Apple");
        set.add("Banana");
        set.add("Apple"); // 重复元素不会被添加

        for (String item : set) {
            System.out.println(item);
        }
    }
}

注释HashSet使用哈希表来存储元素,不能保证元素的顺序。添加重复元素时,不会抛出异常,只是简单地忽略它。

LinkedHashSet

LinkedHashSetHashSet的子类,具有有序性,按照插入顺序保存元素。

import java.util.LinkedHashSet;
import java.util.Set;

public class LinkedHashSetExample {
    public static void main(String[] args) {
        Set<String> set = new LinkedHashSet<>();
        set.add("Apple");
        set.add("Banana");
        set.add("Apple"); // 重复元素不会被添加

        for (String item : set) {
            System.out.println(item);
        }
    }
}

注释LinkedHashSet在维护一个双向链表的同时,使用哈希表来存储元素。可以确保迭代顺序与插入顺序一致。

TreeSet

TreeSet基于红黑树实现,能够对元素进行排序。

import java.util.Set;
import java.util.TreeSet;

public class TreeSetExample {
    public static void main(String[] args) {
        Set<String> set = new TreeSet<>();
        set.add("Banana");
        set.add("Apple");
        set.add("Cherry");

        for (String item : set) {
            System.out.println(item); // 输出将按字母顺序排序
        }
    }
}

注释TreeSet确保集合中的元素按照自然顺序(或者通过提供的比较器)进行排序。

Map集合

Map接口用于存储键值对,每个键对应一个值,键不允许重复。

Map集合常用API

  1. put(K key, V value) - 向Map中添加键值对。如果Map已包含该键,其关联的值将被新值替换。
Map<String, Integer> stock = new HashMap<>();
stock.put("Apple", 50);
stock.put("Orange", 75);
get(Object key) - 根据指定的键返回对应的值。如果Map中不包含该键,则返回null
Integer appleStock = stock.get("Apple"); // 返回50
Integer bananaStock = stock.get("Banana"); // 由于"Banana"键不存在,返回null
  1. remove(Object key) - 根据键移除Map中的键值对。如果键存在,则移除键值对并返回对应的值,如果键不存在,则返回
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值