Java集合框架


Java集合框架是Java标准库的一个重要组成部分,它提供了一组接口和实现,用于存储和操作一组对象。Java集合框架的设计目标是提供一种统一的方式来处理不同的数据结构,如列表、集合和映射等。这使得开发者能够更加灵活和高效地管理数据。

Java集合框架的主要组件

接口
  • Collection: 所有单列集合的根接口。
    • List: 有序集合,允许重复元素。
    • Set: 不允许重复元素的集合。
  • Map: 存储键值对映射关系的集合。
  • Queue: 用于存储元素的队列。
实现类
  • List:
    • ArrayList: 可变大小的数组实现。
    • LinkedList: 双向链表实现,适合频繁插入和删除操作。
    • Vector: 同步版本的ArrayList
    • Stack: 继承自Vector,实现了后进先出(LIFO)的栈操作。
  • Set:
    • HashSet: 基于哈希表实现,不保证元素的顺序。
    • LinkedHashSet: 基于哈希表和链表实现,保持元素的插入顺序。
    • TreeSet: 基于红黑树实现,可以自然排序或自定义排序。
  • Map:
    • HashMap: 基于哈希表实现,不保证键的顺序。
    • LinkedHashMap: 基于哈希表和链表实现,保持键的插入顺序。
    • TreeMap: 基于红黑树实现,可以自然排序或自定义排序键。
  • Queue:
    • ArrayDeque: 双端队列实现。
    • LinkedList: 也可以用作队列。
    • PriorityQueue: 实现了一个基于优先级的队列。

示例代码

创建集合

创建一个List和一个Set的示例:

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class CollectionExample {
    public static void main(String[] args) {
        // 创建一个ArrayList
        List<String> names = new ArrayList<>();
        names.add("Alice");
        names.add("Bob");
        names.add("Charlie");

        // 创建一个HashSet
        Set<String> uniqueNames = new HashSet<>();
        uniqueNames.add("Alice");
        uniqueNames.add("Bob");
        uniqueNames.add("Charlie");

        // 输出List
        System.out.println("List: " + names);

        // 输出Set
        System.out.println("Set: " + uniqueNames);
    }
}
Map的使用

创建一个Map的示例:

import java.util.HashMap;
import java.util.Map;

public class MapExample {
    public static void main(String[] args) {
        // 创建一个HashMap
        Map<String, Integer> ageMap = new HashMap<>();
        ageMap.put("Alice", 25);
        ageMap.put("Bob", 30);
        ageMap.put("Charlie", 22);

        // 输出Map
        System.out.println("Map: " + ageMap);

        // 获取一个键对应的值
        Integer ageOfAlice = ageMap.get("Alice");
        System.out.println("Age of Alice: " + ageOfAlice);
    }
}

集合操作

  • 遍历集合:

    for (String name : names) {
        System.out.println(name);
    }
    
  • 查找元素:

    boolean containsBob = names.contains("Bob");
    System.out.println("Contains Bob: " + containsBob);
    
  • 删除元素:

    names.remove("Charlie");
    
  • 排序集合:

    Collections.sort(names);
    
  • 集合转换:

    List<String> sortedNames = new ArrayList<>(names);
    Collections.sort(sortedNames);
    

总结

Java集合框架提供了一种强大的方式来管理不同类型的集合。理解这些接口和实现可以帮助您更有效地编写代码,特别是在处理大量数据时。如果您有特定的集合操作或应用场景需要帮助,请随时告诉我。

Java集合框架的应用非常广泛,下面我将给出几个具体的例子,展示如何使用Java集合框架中的不同组件来解决实际问题。

示例 1: 存储和排序员工信息

假设我们有一个公司,需要存储员工的信息,并能够根据姓名或年龄对员工进行排序。我们可以使用ArrayListComparator来实现这个功能。

示例代码
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

class Employee {
    private String name;
    private int age;

    public Employee(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    @Override
    public String toString() {
        return "Employee{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

public class EmployeeManager {
    public static void main(String[] args) {
        List<Employee> employees = new ArrayList<>();
        employees.add(new Employee("Alice", 25));
        employees.add(new Employee("Bob", 30));
        employees.add(new Employee("Charlie", 22));

        // 根据姓名排序
        employees.sort(Comparator.comparing(Employee::getName));
        System.out.println("Sorted by Name: " + employees);

        // 根据年龄排序
        employees.sort(Comparator.comparingInt(Employee::getAge));
        System.out.println("Sorted by Age: " + employees);
    }
}

示例 2: 管理唯一用户ID

假设我们需要一个系统来管理用户的唯一ID。我们可以使用HashSet来确保每个ID都是唯一的。

示例代码
import java.util.HashSet;
import java.util.Set;

public class UniqueIdManager {
    public static void main(String[] args) {
        Set<Integer> userIds = new HashSet<>();

        userIds.add(1001);
        userIds.add(1002);
        userIds.add(1001); // 重复的ID,不会被添加
        userIds.add(1003);

        System.out.println("User IDs: " + userIds);

        // 检查某个ID是否存在
        boolean containsId = userIds.contains(1002);
        System.out.println("Contains ID 1002: " + containsId);
    }
}

示例 3: 存储和检索产品信息

假设我们需要存储产品的名称和价格,并能够快速地根据名称检索价格。我们可以使用HashMap来实现这个功能。

示例代码
import java.util.HashMap;
import java.util.Map;

public class ProductCatalog {
    public static void main(String[] args) {
        Map<String, Double> productPrices = new HashMap<>();

        productPrices.put("Apple", 0.99);
        productPrices.put("Banana", 0.59);
        productPrices.put("Orange", 0.79);

        // 获取产品的价格
        double applePrice = productPrices.get("Apple");
        System.out.println("Price of Apple: " + applePrice);

        // 检查是否有某种产品
        boolean hasProduct = productPrices.containsKey("Banana");
        System.out.println("Has Banana: " + hasProduct);

        // 更新产品的价格
        productPrices.put("Apple", 0.95);
        System.out.println("Updated Price of Apple: " + productPrices.get("Apple"));
    }
}

这些示例展示了Java集合框架的基本使用方法,包括如何创建集合、添加元素、排序、查找元素等。如果您有其他具体的需求或者应用场景,请告诉我,我可以提供更详细的帮助。

让我们继续探讨Java集合框架的具体应用案例。这次我们将关注使用QueueSet来解决实际问题。

示例 4: 使用队列实现任务调度

假设我们需要一个任务调度系统,该系统按照先进先出(FIFO)的原则处理任务。我们可以使用Queue接口的实现类ArrayDeque来实现这个功能。

示例代码
import java.util.ArrayDeque;
import java.util.Queue;

public class TaskScheduler {
    public static void main(String[] args) {
        Queue<String> tasks = new ArrayDeque<>();

        // 添加任务
        tasks.add("Task 1");
        tasks.add("Task 2");
        tasks.add("Task 3");

        // 处理任务
        while (!tasks.isEmpty()) {
            String task = tasks.poll(); // 获取并移除队首的任务
            System.out.println("Processing task: " + task);
        }
    }
}

示例 5: 使用集合去除重复元素

假设我们需要从一个列表中去除重复的元素,并保持原有的顺序。我们可以使用LinkedHashSet来实现这一功能。

示例代码
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;

public class RemoveDuplicates {
    public static void main(String[] args) {
        List<String> items = new ArrayList<>();
        items.add("apple");
        items.add("banana");
        items.add("apple");
        items.add("orange");
        items.add("banana");

        // 使用LinkedHashSet去除重复元素
        Set<String> uniqueItems = new LinkedHashSet<>(items);

        // 将去重后的结果放回列表
        items.clear();
        items.addAll(uniqueItems);

        System.out.println("Unique items: " + items);
    }
}

示例 6: 使用映射存储和检索信息

假设我们有一个图书管理系统,需要存储每本书的标题和作者信息,并能够根据书名快速检索到作者。我们可以使用HashMap来实现这个功能。

示例代码
import java.util.HashMap;
import java.util.Map;

public class BookManager {
    public static void main(String[] args) {
        Map<String, String> books = new HashMap<>();

        books.put("The Great Gatsby", "F. Scott Fitzgerald");
        books.put("To Kill a Mockingbird", "Harper Lee");
        books.put("1984", "George Orwell");

        // 检索一本书的作者
        String author = books.get("To Kill a Mockingbird");
        System.out.println("Author of 'To Kill a Mockingbird': " + author);

        // 更新一本书的信息
        books.put("1984", "George Orwell (Revised Edition)");

        // 输出所有书籍及其作者
        for (Map.Entry<String, String> entry : books.entrySet()) {
            System.out.println("Book: " + entry.getKey() + ", Author: " + entry.getValue());
        }
    }
}

示例 7: 使用优先级队列实现优先级调度

假设我们需要一个任务调度系统,其中某些任务具有更高的优先级。我们可以使用PriorityQueue来实现这个功能。

示例代码
import java.util.PriorityQueue;
import java.util.Queue;

class Task implements Comparable<Task> {
    private String name;
    private int priority;

    public Task(String name, int priority) {
        this.name = name;
        this.priority = priority;
    }

    public String getName() {
        return name;
    }

    public int getPriority() {
        return priority;
    }

    @Override
    public int compareTo(Task other) {
        return Integer.compare(this.priority, other.priority);
    }

    @Override
    public String toString() {
        return "Task{" +
                "name='" + name + '\'' +
                ", priority=" + priority +
                '}';
    }
}

public class PriorityTaskScheduler {
    public static void main(String[] args) {
        Queue<Task> tasks = new PriorityQueue<>();

        // 添加任务
        tasks.add(new Task("High Priority Task", 1));
        tasks.add(new Task("Medium Priority Task", 2));
        tasks.add(new Task("Low Priority Task", 3));

        // 处理任务
        while (!tasks.isEmpty()) {
            Task task = tasks.poll(); // 获取并移除最高优先级的任务
            System.out.println("Processing task: " + task);
        }
    }
}

这些示例展示了如何使用Java集合框架中的不同组件来解决实际问题。如果您有其他具体的需求或者应用场景,请随时告诉我,我可以提供更多相关的帮助。

😍😍 海量H5小游戏、微信小游戏、Web casualgame源码😍😍
😍😍试玩地址: https://www.bojiogame.sg😍😍
😍看上哪一款,需要源码的csdn私信我😍

————————————————

​最后我们放松一下眼睛
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极致人生-010

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值