
本文详解如何正确获取 arraylist 中每个字符串的首字符,并基于首字符条件(如排除以 "s" 开头的单词)进行筛选输出,避免常见类型错误与逻辑陷阱。
本文详解如何正确获取 arraylist 中每个字符串的首字符,并基于首字符条件(如排除以 "s" 开头的单词)进行筛选输出,避免常见类型错误与逻辑陷阱。
在 Java 中,ArrayList
你遇到的两个关键问题分别是:
- 类型错误:itemsArrayList.charAt(0) 是非法的,因为 ArrayList 没有 charAt() 方法;
- 逻辑与语法错误:== "S" 用于比较字符串字面量是错误的(应使用 "S".equals(...) 或 str.startsWith("S")),且 == 比较的是引用而非内容,而 charAt(0) 返回的是 char 类型,应与 'S'(单引号字符)比较,而非 "S"(双引号字符串)。
✅ 正确做法如下:
import java.util.ArrayList;
public class FilterStringList {
public static void main(String[] args) {
ArrayList<string> items = new ArrayList();
items.add("Slim");
items.add("Shady");
items.add("Apple");
items.add("Banana");
items.add("Sun");
System.out.println("Words NOT starting with 'S':");
for (String word : items) {
// 空字符串和 null 防御性检查
if (word != null && !word.isEmpty() && word.charAt(0) != 'S') {
System.out.println(word);
}
}
}
}</string>
输出结果:
Words NOT starting with 'S': Apple Banana
? 关键要点总结:
- ✅ 使用 list.get(i).charAt(0) 或增强 for 循环中的 word.charAt(0) 访问首字符;
- ✅ charAt(0) 返回 char,务必用单引号比较(如 'S'),不可用 "S";
- ✅ 始终检查 null 和空字符串(word.isEmpty()),避免 StringIndexOutOfBoundsException 或 NullPointerException;
- ✅ 若需忽略大小写(如同时排除 "s" 和 "S"),可用 !word.toLowerCase().startsWith("s") 或 Character.toUpperCase(word.charAt(0)) != 'S';
- ❌ 避免 == 比较字符串内容,也勿在 ArrayList 上直接调用字符串方法。
掌握这一模式后,你不仅能筛选首字符,还可轻松扩展至任意位置字符访问(如 charAt(2))、长度判断、子串提取等常见字符串操作。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











