java - 如何在java中的arraylist中的单词中间添加字符?
问题描述
我在练习ArrayList
。我试图让它每次is
都在 ArrayList 中,然后跟在not
. 例如[is sky, is, this is blue, is is, is not]
,在运行该方法后,结果为[is not sky, is not, this is not blue, is not is not, is not not]
. 但是,现在我的代码并没有改变。我是Java新手,所以我真的很感激任何指针!
class Main {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("is sky");
list.add("is");
list.add("this is blue");
list.add("is is");
list.add("is not");
System.out.println(replace(list));
}
public static ArrayList<String> replace(ArrayList<String> list) {
for (int i = 0; i < list.size(); i++) {
if (list.subList(i, i + 1).equals("is")) {
list.add(i + 1, " not");
}
}
return list;
}
}
解决方案
先解决最简单的情况。暂时忘记列表,只用一个String
.
String replaceOne(String original) {
return original.replace("is", "is not");
}
测试这个方法。
String replaced = replaceOne("sky is");
如果此replaced
变量等于 ,则测试通过sky is not
。
一旦你保证了这一点,请继续使用列表来处理一般情况。
void replaceMany(ArrayList<String> original) {
for (int i = 0; i < original.size(); i++) {
original.set(i, replaceOne(original.get(i)));
}
}
请注意,如果您在静态方法中运行它,则上述方法必须是静态的(即static void
, static String
)。
使用 Java 8,您还可以以不同的方式解决此问题。您可以使用 lambdas 和收集器来获取修改后的列表,而不是使用set
数组列表上的方法(保留原始列表并使用修改后的字符串获取另一个列表)。就像是:
List<String> replaced = original.stream()
.map(s -> replaceOne(s))
.collect(Collectors.toList());
推荐阅读
- node.js - 使用 exceljs writeBuffer 保存新的 excel 文件时出错
- module - 加载自定义 Julia 模块时出错
- javascript - 如何在某些组件上隐藏侧导航?
- javascript - Firebase: Firebase serve = 默认的 Firebase 应用已经存在
- javascript - 如何在 Javascript 中格式化时间戳以显示相关时区的正确时间
- c++ - 分配顺序产生不同的装配
- javascript - 量角器 - 如何将密钥发送到 contenteditable div?
- node.js - Express Js 无法从 React Js 检索提交的表单数据
- javascript - 如何将图像的 alt 与 Javascript 中选择框中的选定值相匹配?
- rest - Bitbucket 服务器 api 从包含斜杠的标签中检索提交数据