如何从String类型ArrayList中无需指定索引获取两个ID条目之间的内容
实现思路
- 先遍历列表定位到目标ID所在的下标
- 从目标下标的下一位开始收集元素,直到遇到下一个包含
ID:的元素或者列表遍历结束为止
Java 实现代码
import java.util.ArrayList; import java.util.List; public class IdContentExtractor { public static List<String> getContentAfterId(List<String> originList, String targetId) { List<String> result = new ArrayList<>(); // 第一步:定位目标ID的位置 int startIndex = -1; for (int i = 0; i < originList.size(); i++) { if (originList.get(i).equals(targetId)) { startIndex = i; break; } } // 没找到目标ID直接返回空结果 if (startIndex == -1) { return result; } // 第二步:收集目标ID之后到下一个ID之前的内容 for (int i = startIndex + 1; i < originList.size(); i++) { String currentStr = originList.get(i); // 遇到下一个ID条目就终止遍历 if (currentStr.contains("ID:")) { break; } result.add(currentStr); } return result; } public static void main(String[] args) { // 测试用的原始列表 List<String> list = new ArrayList<>(); list.add("ID: 12"); list.add("Term: Banana"); list.add("Definition = yellow fruit"); list.add("ID: 14"); list.add("Term: Apple"); list.add("Definition = green fruit"); list.add("Description = Beautiful fruit"); list.add("ID: 16"); list.add("Term: Melon"); list.add("Definition = yellow fruit"); // 获取ID:14对应的内容 List<String> content = getContentAfterId(list, "ID: 14"); // 输出结果 for (String s : content) { System.out.println(s); } } }
运行输出
Term: Apple Definition = green fruit Description = Beautiful fruit
扩展优化
如果不需要传入完整的ID: xx字符串,只需要传入ID数值即可查询,可以修改定位目标ID的判断逻辑:
// 原判断条件替换为,targetId改为int类型参数 if (originList.get(i).startsWith("ID: ") && originList.get(i).split(": ")[1].equals(String.valueOf(targetId))) { startIndex = i; break; }
内容的提问来源于stack exchange,提问作者Christopher
相关产品推荐
相关产品推荐

