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

Java实现根据用户输入的部分ID搜索ArrayList

实现ArrayList中ID的部分匹配搜索

没问题,要把你的完全匹配改成部分匹配其实非常简单,只需要调整判断逻辑就行,结合你已经在用的.toUpperCase()统一大小写,就能实现不区分大小写的模糊搜索啦。

核心思路

原来你用的是equals()做完全相等判断,现在换成contains()方法,只要ArrayList中的大写ID包含用户输入转大写后的关键词,就判定为匹配。

完整示例代码

假设你的ArrayList里存的是带ID属性的实体类,这里我写一个完整的可运行示例:

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

// 模拟你的条目实体类,可根据实际情况调整属性和方法
class Entry {
    private String id;
    // 可添加其他业务属性,比如名称、描述等

    public Entry(String id) {
        this.id = id;
    }

    public String getId() {
        return id;
    }

    // 重写toString方便打印条目详情
    @Override
    public String toString() {
        return "Entry{id='" + id + "'}";
    }
}

public class PartialIdSearchDemo {
    public static void main(String[] args) {
        // 初始化测试数据,所有ID均为大写
        List<Entry> entryList = new ArrayList<>();
        entryList.add(new Entry("HOUSE_001"));
        entryList.add(new Entry("HOUSE_002"));
        entryList.add(new Entry("CAR_001"));
        entryList.add(new Entry("OFFICE_001"));

        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入要搜索的ID关键词:");
        // 处理用户输入:去除首尾空格 + 转大写,统一匹配规则
        String searchKeyword = scanner.nextLine().trim().toUpperCase();

        // 方式1:传统循环筛选(兼容所有Java版本)
        List<Entry> matchedEntries = new ArrayList<>();
        for (Entry entry : entryList) {
            // 用contains代替equals,实现部分匹配
            if (entry.getId().contains(searchKeyword)) {
                matchedEntries.add(entry);
            }
        }

        // 方式2:Java 8+ Stream API(代码更简洁)
        // List<Entry> matchedEntries = entryList.stream()
        //         .filter(entry -> entry.getId().contains(searchKeyword))
        //         .toList();

        // 输出搜索结果
        if (matchedEntries.isEmpty()) {
            System.out.println("未找到匹配的条目");
        } else {
            System.out.println("找到 " + matchedEntries.size() + " 条匹配结果:");
            matchedEntries.forEach(System.out::println);
        }

        scanner.close();
    }
}

关键说明

  1. 大小写统一:保持用户输入转大写的逻辑,因为你的ArrayList中ID都是大写,这样用户输入house、HouSe或者HOU都能匹配到所有ID含HOUSE的条目,实现不区分大小写的搜索。
  2. 部分匹配核心:用String.contains()方法替代原来的equals(),这个方法会检查目标字符串是否包含指定的子串,完美满足你的部分匹配需求。
  3. 可选优化:如果需要支持更复杂的匹配规则(比如通配符、正则),可以改用String.matches()方法,但对于基础的部分匹配,contains()已经足够高效和简单。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:31:29