Java 集合框架之List 的使用(附小游戏练习)

Java 集合框架之 List 的使用

List的概念介绍

在Java的集合框架中,List是其中一个非常重要和常用的容器类。它可以存储有序、可重复的数据集合,并且允许对其中的元素进行增删改查等操作,非常方便。List可以通过下标/索引的方式访问其中的元素,也可以通过迭代器对其中的元素进行遍历。

常用的List实现类有:ArrayList、LinkedList和Vector。其中,ArrayList是最常用的一种实现,而Vector用得较少,前两者的区别在于底层的存储结构不同。

List的基本用法

创建List实例

Java中创建List对象可以使用ArrayListLinkedList

List<String> list1 = new ArrayList<>(); // 创建ArrayList实例
List<Integer> list2 = new LinkedList<>(); // 创建LinkedList实例

添加元素

List中添加元素最常用的方法是add。例如list1.add("A");将字符串"A"添加到list1中。

List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");

获取元素

List中获取元素的方法有很多,其中最常用的是根据下标/索引获取元素。list.get(i)方法可以获取索引为i的元素。

List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
System.out.println(list.get(0)); // 输出"A"
System.out.println(list.get(1)); // 输出"B"
System.out.println(list.get(2)); // 输出"C"

删除元素

可以使用remove方法删除List中的元素。例如list.remove(1)将删除索引为1的元素。

List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
list.remove(1);
System.out.println(list.get(0)); // 输出"A"
System.out.println(list.get(1)); // 输出"C"

修改元素

可以使用set方法修改List中的元素。例如list.set(1, "D")将索引为1的元素修改为"D"。

List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
list.set(1, "D");
System.out.println(list.get(0)); // 输出"A"
System.out.println(list.get(1)); // 输出"D"

遍历List

List可以使用for循环和迭代器遍历其中的元素。例如使用for循环遍历

List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
for(String str: list) {
    System.out.println(str);
}

输出结果为:

A
B
C

示例

示例一:字符串列表排序

以下代码给出了一个字符串List中的元素排序的例子。

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class SortExample {

    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("apple");
        list.add("banana");
        list.add("orange");
        list.add("pear");
        System.out.println("原始List: " + list);
        Collections.sort(list);
        System.out.println("升序排序后的List: " + list);
        Collections.reverse(list);
        System.out.println("降序排序后的List: " + list);
    }

}

输出结果为:

原始List: [apple, banana, orange, pear]
升序排序后的List: [apple, banana, orange, pear]
降序排序后的List: [pear, orange, banana, apple]

示例二:字母猜猜猜游戏

以下代码给出了一个简单的猜字母游戏,其中用List存储了要猜的字母。

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class GuessGame {

    public static void main(String[] args) {
        List<String> words = new ArrayList<>();
        words.add("JAVASE");
        words.add("SELENIUM");
        words.add("PYTHON");
        words.add("MYSQL");
        words.add("ORACLE");
        int index = (int) (Math.random() * words.size());

        String wordToGuess = words.get(index);
        int wordLength = wordToGuess.length();

        List<Character> letters = new ArrayList<>();
        for (int i = 0; i < wordLength; i++) {
            letters.add(wordToGuess.charAt(i));
        }

        List<Character> progress = new ArrayList<>();
        for (int i = 0; i < wordLength; i++) {
            progress.add('_');
        }

        int remainingAttempts = 5;
        Scanner scanner = new Scanner(System.in);

        while (remainingAttempts > 0) {
            String progressString = "";
            for (Character character : progress) {
                progressString += character;
            }

            System.out.println("请猜一个" + wordLength + "个字母的单词: " + progressString);
            String guess = scanner.nextLine().toUpperCase();

            if (guess.length() != 1) {
                System.out.println("只能猜一个字母哦!");
                continue;
            }

            Character letter = guess.charAt(0);
            if (!Character.isLetter(letter)) {
                System.out.println("只能猜字母哦!");
                continue;
            }

            boolean found = false;
            for (int i = 0; i < wordLength; i++) {
                if (letter.equals(letters.get(i))) {
                    progress.set(i, letter);
                    found = true;
                }
            }
            if (found) {
                System.out.println("恭喜你猜对了!");
            } else {
                System.out.println("猜错了,再试一次吧!");
                remainingAttempts--;
            }

            if (progress.contains('_')) {
                System.out.println("你还有" + remainingAttempts + "次机会");
            } else {
                System.out.println("恭喜你猜对了!答案是:" + wordToGuess);
                break;
            }
        }

        if (remainingAttempts <= 0) {
            System.out.println("你的机会用完了,闯关失败...");
        }
    }

}

输出结果为:

请猜一个7个字母的单词: _______
S
猜错了,再试一次吧!
你还有4次机会
请猜一个7个字母的单词: _______
J
恭喜你猜对了!
请猜一个7个字母的单词: J______
A
恭喜你猜对了!
请猜一个7个字母的单词: JA_____
V
恭喜你猜对了!
请猜一个7个字母的单词: JAV____
A
恭喜你猜对了!
请猜一个7个字母的单词: JAVA___
S
猜错了,再试一次吧!
你还有3次机会
请猜一个7个字母的单词: JAVA___
E
恭喜你猜对了!
请猜一个7个字母的单词: JAVA_E_
R
恭喜你猜对了!
请猜一个7个字母的单词: JAVAE_R
S
猜错了,再试一次吧!
你还有2次机会
请猜一个7个字母的单词: JAVAE_R
L
恭喜你猜对了!
请猜一个7个字母的单词: JAVAE_LR
I
恭喜你猜对了!
请猜一个7个字母的单词: JAVAE_LRI
F
猜错了,再试一次吧!
你还有1次机会
请猜一个7个字母的单词: JAVAE_LRI
M
猜错了,再试一次吧!
你还有0次机会
你的机会用完了,闯关失败...

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java 集合框架之List 的使用(附小游戏练习) - Python技术站

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

相关文章

  • Java中instance的用法详解

    Java中instance的用法详解 在Java中,instance是一个关键字,表示对象的实例。在本文中,我们将会详细讲解instance的用法,包括什么是instance、如何使用instance以及instance的常见应用场景。 什么是instance instance是一个关键字,表示对象的实例。在Java中,对象是类的一个实例,有着自己的属性和方…

    Java 2023年5月26日
    00
  • MVC+DAO设计模式下的设计流程详解

    MVC+DAO 是一种常用的设计模式,用于规范化代码的开发和维护,它能够分层,直观地体现出每一层的职责。下面是基于 MVC+DAO 设计模式的完整攻略: 1. MVC设计模式 MVC 分为 Model、View、Controller 三个部分。其中: Model:负责数据的存储和管理,不关心具体的业务逻辑,同样也不关心将数据如何展示给用户。 Controll…

    Java 2023年6月16日
    00
  • 北邮考研复试C语言上机题目精选

    北邮考研复试C语言上机题目精选攻略 基本情况 北邮考研复试C语言上机题目共有5道,考核面广,涉及到C语言各个方面,需要考生对C语言的基础知识和实际应用都有一定的掌握。 准备工作 在参加北邮考研复试C语言上机题目考试之前,需要考生准备好以下内容: 一台已经配置好编程环境的电脑。 熟悉基本的C语言语法和编程技巧:控制语句、函数、指针、数组、结构体等。 练习写C语…

    Java 2023年5月19日
    00
  • mvc 、bootstrap 结合分布式图简单实现分页

    MVC、Bootstrap结合分布式图简单实现分页攻略 本文将详细讲解如何使用MVC、Bootstrap和分布式图来实现分页功能。我们将使用SpringMVC作为MVC框架,Bootstrap作为前端框架,分布式图作为数据可视化工具。本文将提供两个示例说明,以帮助您更好地理解如何实现分页功能。 1. 创建SpringMVC项目 首先,我们需要创建一个Spri…

    Java 2023年5月18日
    00
  • springboot简单实现单点登录的示例代码

    Spring Boot是一个非常流行的Java Web框架,它提供了很多便捷的功能和工具,可以帮助我们快速构建Web应用程序。其中,单点登录(Single Sign-On,简称SSO)是一个非常重要的功能,可以让用户在多个应用程序之间无需重复登录。以下是Spring Boot简单实现单点登录的示例代码的完整攻略: 使用Spring Security实现单点登…

    Java 2023年5月15日
    00
  • SpringBoot中热部署配置深入讲解原理

    SpringBoot中热部署配置深入讲解原理 热部署是指在应用程序运行时,对代码进行修改后,无需重启应用程序即可使修改生效。在Spring Boot中,可以通过配置实现热部署。本文将深入讲解Spring Boot中热部署的原理,并提供两个示例。 原理 Spring Boot中的热部署是通过Spring Boot DevTools实现的。Spring Boot…

    Java 2023年5月15日
    00
  • 如何建立一个 XML 的开发环境

    建立一个 XML 的开发环境需要以下步骤: 1. 安装 XML 编辑器 现在有很多 XML 编辑器可供选择,比如 Notepad++、Sublime Text、Visual Studio Code、Eclipse 等。推荐使用 Visual Studio Code,因为它是一个免费、跨平台的开源代码编辑器,并且提供了丰富的插件来支持 XML 开发。 安装 V…

    Java 2023年5月20日
    00
  • Java编程获取当前屏幕分辨率的方法示例

    下面我将详细讲解Java编程获取当前屏幕分辨率的方法示例的完整攻略。 步骤一:引入AWT库 AWT是Java提供的图形界面库,用于处理图形化界面相关的程序。在获取当前屏幕分辨率的过程中,需要用到该库中的Toolkit类,因此首先需要引入该库。 请在Java代码中加入以下语句: import java.awt.Toolkit; 步骤二:使用Toolkit类获取…

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