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

如何从存储字符串字符的ArrayList中移除所有非字母字符?

移除ArrayList中的非字母字符

嘿,我来帮你搞定这个问题!你已经成功把用户输入的字符串转成了ArrayList<Character>,现在要过滤掉所有非字母的字符(比如.、=这类),只保留纯字母部分对吧?这里有两种实用的方法:

方法1:倒序遍历并移除元素

如果正序遍历ArrayList并删除元素,会导致后续元素的索引偏移,容易漏删或者抛出索引越界异常。倒序遍历就不会有这个问题:

// 倒序遍历ArrayList,避免索引偏移问题
for (int i = stringArrayList.size() - 1; i >= 0; i--) {
    char c = stringArrayList.get(i);
    // 判断当前字符是否不是字母
    if (!Character.isLetter(c)) {
        stringArrayList.remove(i);
    }
}

处理完成后,你的stringArrayList里就只剩下B、u、b、b、l、e、s、o、r、t这些字母字符,正好对应单词"Bubblesort"。

方法2:使用Stream API(Java 8+)

如果你的项目用的是Java 8及以上版本,用Stream过滤会更简洁优雅,还能避免手动处理索引的麻烦:

方式A:生成新的过滤列表

import java.util.stream.Collectors;

// 过滤出字母字符,生成新的ArrayList
ArrayList<Character> filteredList = stringArrayList.stream()
    .filter(Character::isLetter)
    .collect(Collectors.toCollection(ArrayList::new));

方式B:直接修改原列表

如果不想创建新列表,用removeIf方法可以直接在原列表上操作,内部已经处理了遍历逻辑:

// 直接移除原列表中的非字母元素
stringArrayList.removeIf(c -> !Character.isLetter(c));

效果验证

针对你的输入示例Bubblesort.=,不管用上面哪种方法,最终的ArrayList都会只包含组成"Bubblesort"的所有字母字符,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:26:59