You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将循环采集的多组不同变量数据批量插入到LinkedList中

问题解答

现有代码的已知问题修正

  • 变量类型错误:name和phonenum是字符串类型,不能用int声明,需要改为String类型
  • Scanner输入流残留问题:调用nextInt()读取年龄后,输入缓冲区会残留换行符,会导致后续的nextLine()直接读取到空值,需要额外调用一次nextLine()吃掉残留的换行
  • Scanner对象命名不一致:代码里一会用input一会用sc,需要统一命名

链表和ArrayList的使用差异

如果你用的是Java标准库提供的java.util.LinkedList,插入数据的API调用方式和ArrayList基本一致,二者都实现了List接口,都可以直接调用add()方法插入数据。二者的核心差异在底层实现:ArrayList基于动态数组实现,随机访问更快;LinkedList基于双向链表实现,中间节点的插入、删除效率更高。如果你是自己手写实现链表结构,才需要手动处理节点的指针指向拼接。

批量插入数据到链表的实现逻辑

  • 先自定义一个实体类封装name、age、phonenum三个属性,每次循环获取的一组输入对应一个实体类对象
  • 不需要等整个循环结束再存储数据,循环内部每获取到一组完整的用户输入,就可以将对应的实体对象直接添加到链表中

完整可运行参考代码

// 自定义实体类封装用户信息
class User {
    String name;
    int age;
    String phonenum;

    // 构造方法
    public User(String name, int age, String phonenum) {
        this.name = name;
        this.age = age;
        this.phonenum = phonenum;
    }

    // 重写toString方便打印查看数据
    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", phonenum='" + phonenum + '\'' +
                '}';
    }
}
import java.util.LinkedList;
import java.util.Scanner;

public class LinkedListTest {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 声明存储User对象的LinkedList
        LinkedList<User> userLinkedList = new LinkedList<>();
        char stop = 'Y';

        while(stop != 'N'){
            System.out.println("\nEnter your name : ");
            String name= sc.nextLine();
            System.out.println("\nEnter your age: ");
            int age= sc.nextInt();
            // 吃掉nextInt残留的换行符
            sc.nextLine();
            System.out.println("\nEnter your phone number: ");
            String phonenum= sc.nextLine();

            // 新建User对象并插入链表
            userLinkedList.add(new User(name, age, phonenum));

            System.out.println("Enter 'Y' to continue, 'N' to Stop: ");
            // 统一转大写避免小写输入无法终止循环
            stop = sc.nextLine().toUpperCase().charAt(0);
        }

        // 测试打印链表中所有数据
        System.out.println("\n链表中存储的所有数据:");
        for (User user : userLinkedList) {
            System.out.println(user);
        }
        sc.close();
    }
}

内容的提问来源于stack exchange,提问作者naddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 14:45:01