一篇文章带你入门java集合

一篇文章带你入门Java集合

Java集合是Java编程中常用的数据结构,包含了List、Set、Map等常用的集合类型。本文将从以下几个方面介绍Java集合:

  1. Java集合的类型和概念
  2. Java集合的基础用法
  3. Java集合的注意事项

1. Java集合的类型和概念

集合类型

Java集合主要有以下三种类型:

  1. List(列表):有序,可以重复,例如ArrayList、LinkedList等。
  2. Set(集合):无序,不能重复,例如HashSet、TreeSet等。
  3. Map(映射表):Key-Value键值对,可以根据Key查找Value,例如HashMap、TreeMap等。

集合概念

Java集合中常用的概念有以下几个:

  1. 元素(Element):集合中存储的数据项。
  2. 长度(Size):集合中元素的数量。
  3. 迭代器(Iterator):用于遍历集合中的元素。
  4. 泛型(Generic):Java 5.0 引入的类型安全机制,用于指定集合中可以存储的元素类型。
  5. 装箱(Boxing):将基本类型数据转换为对应的封装类类型。

2. Java集合的基础用法

List

List是有序的集合,可以重复。常用的List有ArrayList和LinkedList。

ArrayList

ArrayList是基于数组实现的List,具有如下特点:

  1. 读取数据快,增删数据慢。
  2. 可以设置容量(initialCapacity),可以防止扩容导致性能下降。

以下是ArrayList的基本用法:

List<String> arrayList = new ArrayList<>();
arrayList.add("apple");
arrayList.add("banana");
arrayList.add("orange");
System.out.println(arrayList.get(1)); // 输出:banana

LinkedList

LinkedList是基于链表实现的List,具有如下特点:

  1. 读取数据慢,增删数据快。
  2. 不需要设置容量,可以动态扩展。

以下是LinkedList的基本用法:

List<String> linkedList = new LinkedList<>();
linkedList.add("apple");
linkedList.add("banana");
linkedList.add("orange");
System.out.println(linkedList.get(2)); // 输出:orange

Set

Set是无序的集合,不允许重复。常用的Set有HashSet和TreeSet。

HashSet

HashSet是基于HashMap实现的Set,具有如下特点:

  1. 数据存储无序。
  2. 不允许重复,添加重复元素时会被忽略。
  3. 可以添加null元素。

以下是HashSet的基本用法:

Set<String> hashSet = new HashSet<>();
hashSet.add("apple");
hashSet.add("banana");
hashSet.add("orange");
hashSet.add("banana"); // 添加重复元素会被忽略
System.out.println(hashSet.size()); // 输出:3

TreeSet

TreeSet是基于红黑树实现的Set,具有如下特点:

  1. 数据存储有序。
  2. 不允许重复,添加重复元素时会被忽略。
  3. 不允许添加null元素。

以下是TreeSet的基本用法:

Set<String> treeSet = new TreeSet<>();
treeSet.add("apple");
treeSet.add("banana");
treeSet.add("orange");
treeSet.add("banana"); // 添加重复元素会被忽略
System.out.println(treeSet.size()); // 输出:3

Map

Map是Key-Value键值对的映射表,可以根据Key查找Value。常用的Map有HashMap和TreeMap。

HashMap

HashMap是基于散列表实现的Map,具有如下特点:

  1. 数据存储无序。
  2. Key不允许重复,添加重复Key时会覆盖原有的Value。
  3. 可以添加null Key和null Value。

以下是HashMap的基本用法:

Map<String, String> hashMap = new HashMap<>();
hashMap.put("apple", "red");
hashMap.put("banana", "yellow");
hashMap.put("orange", "orange");
hashMap.put("banana", "green"); // 添加重复Key时会覆盖原有的Value
System.out.println(hashMap.get("banana")); // 输出:green

TreeMap

TreeMap是基于红黑树实现的Map,具有如下特点:

  1. 数据存储有序。
  2. Key不允许重复,添加重复Key时会覆盖原有的Value。
  3. 不允许添加null Key和null Value。

以下是TreeMap的基本用法:

Map<String, String> treeMap = new TreeMap<>();
treeMap.put("apple", "red");
treeMap.put("banana", "yellow");
treeMap.put("orange", "orange");
treeMap.put("banana", "green"); // 添加重复Key时会覆盖原有的Value
System.out.println(treeMap.get("banana")); // 输出:green

3. Java集合的注意事项

集合遍历

Java集合可以使用for-each循环或迭代器进行遍历。

使用for-each循环遍历

List<String> arrayList = new ArrayList<>();
arrayList.add("apple");
arrayList.add("banana");
arrayList.add("orange");

for (String element : arrayList) {
    System.out.println(element);
}

使用迭代器遍历

List<String> arrayList = new ArrayList<>();
arrayList.add("apple");
arrayList.add("banana");
arrayList.add("orange");

Iterator<String> iterator = arrayList.iterator();
while (iterator.hasNext()) {
    String element = iterator.next();
    System.out.println(element);
}

集合排序

Java集合可以使用Collections.sort()方法进行排序,也可以使用TreeSet等自带排序功能的集合。

使用Collections.sort()方法排序

List<Integer> arrayList = new ArrayList<>();
arrayList.add(2);
arrayList.add(3);
arrayList.add(1);

Collections.sort(arrayList); // 默认升序排序

for (Integer element : arrayList) {
    System.out.println(element);
}

使用TreeSet自带排序功能排序

Set<Integer> treeSet = new TreeSet<>();
treeSet.add(2);
treeSet.add(3);
treeSet.add(1);

for (Integer element : treeSet) {
    System.out.println(element);
}

示例说明:

示例1:使用ArrayList存储用户信息

public class User {
    private String name;
    private int age;

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

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

public class UserList {
    private List<User> userList = new ArrayList<>();

    public void addUser(User user) {
        userList.add(user);
    }

    public void removeUser(User user) {
        userList.remove(user);
    }

    public List<User> getUserList() {
        return userList;
    }
}

public class Main {
    public static void main(String[] args) {
        UserList userList = new UserList();
        userList.addUser(new User("Alice", 25));
        userList.addUser(new User("Bob", 30));
        userList.addUser(new User("Charlie", 35));

        List<User> list = userList.getUserList();
        for (User user : list) {
            System.out.println(user.getName() + ", " + user.getAge());
        }
    }
}

上述代码演示了如何使用ArrayList存储用户信息,并使用for-each循环遍历集合。

示例2:使用HashSet实现排重功能

public class Main {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();
        set.add("apple");
        set.add("banana");
        set.add("orange");
        set.add("banana");

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

上述代码演示了如何使用HashSet去除重复元素。由于HashSet不允许存储重复元素,因此最终输出结果只有三个元素。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一篇文章带你入门java集合 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • SpringBoot接入轻量级分布式日志框架(GrayLog)的操作方法

    Spring Boot接入轻量级分布式日志框架(GrayLog)的操作方法 GrayLog是一个轻量级的分布式日志框架,可以帮助我们收集、存储和分析应用程序的日志。在本文中,我们将详细讲解如何在Spring Boot应用程序中接入GrayLog。 步骤一:添加依赖 我们需要在pom.xml文件中添加以下依赖项: <dependency> <…

    Java 2023年5月15日
    00
  • ajax提交session超时跳转页面使用全局的方法来处理

    下面我将详细讲解“ajax提交session超时跳转页面使用全局的方法来处理”的攻略: 1. 为什么需要处理session超时问题? 在网站应用中,为了提高用户体验和保护用户数据安全,通常需要对用户进行登录鉴权,登录成功后保留用户信息,而服务器端的Session就是一个将用户信息和服务器端的数据进行关联的机制。但是Session都有一个生命周期,当这个生命周…

    Java 2023年6月16日
    00
  • 14个编写Spring MVC控制器的实用小技巧(吐血整理)

    下面是对“14个编写Spring MVC控制器的实用小技巧(吐血整理)”的完整攻略: 1. 引入必要的依赖 在开始编写Spring MVC控制器之前,我们需要在项目中引入Spring MVC相关的依赖。通常情况下,我们需要在pom.xml文件中引入以下依赖: <dependencies> <dependency> <groupI…

    Java 2023年5月16日
    00
  • JavaSE系列基础包装类及日历类详解

    JavaSE系列基础包装类及日历类详解 什么是JavaSE系列基础包装类? JavaSE系列基础包装类是Java语言中提供的8个用来处理基本数据类型的类,分别是Byte、Short、Integer、Long、Float、Double、Boolean和Character。 这些类为基本数据类型提供了封装,在封装过程中可以进行一些特定的操作,如转换为字符串、比较…

    Java 2023年5月20日
    00
  • Java实现聊天室界面

    实现Java聊天室界面的攻略如下: 1. 选择Java图形界面库 首先需要选择合适的Java图形界面库,建议使用JavaFX或Swing。本文将以JavaFX为例进行介绍。 2. 创建JavaFX项目 使用IDE工具(如eclipse或IntelliJ IDEA)创建一个JavaFX项目,选择合适的开发环境和JDK版本。创建后,在项目中创建一个JavaFX主…

    Java 2023年5月19日
    00
  • MyBatis传入多个参数时parameterType的写法

    MyBatis是一个Java持久层ORM框架,支持多种数据库,本质上是将SQL语句映射成Java方法调用,将Java对象映射成数据库中的记录。在使用MyBatis进行开发时,我们需要经常传入多个参数,来完成复杂的查询、插入、更新、删除等操作。这就需要我们正确设置parameterType参数来保证程序的正常运行。 1.传入多个参数时parameterType…

    Java 2023年5月20日
    00
  • Java web过滤器验证登录防止未登录进入界面

    Java web过滤器可以用来实现登录验证,防止未登录用户进入系统内部页面,增强系统的安全性。下面是一个完整的攻略。 1.设计登录页面 首先需要设计一个用户登录的页面。用户在页面中输入用户名和密码。 2.实现用户验证 在Java web中,可以通过session来保存用户的信息。用户在登录后,将用户名和密码存储在session中。 3.编写过滤器 编写一个过…

    Java 2023年6月15日
    00
  • spring boot项目快速构建的全步骤

    下面是一份详细的“Spring Boot项目快速构建的全步骤”攻略: 步骤一:创建Spring Boot项目的初始结构 要快速构建Spring Boot项目,我们需要使用Spring Initializr工具来快速创建基于Maven或Gradle构建系统的Spring Boot项目的初始结构。 打开 https://start.spring.io/,选择项目…

    Java 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部