【发布时间】:2014-01-31 20:49:19
【问题描述】:
我一直在努力修改传递给方法的数组列表。我只能修改该数组列表,而无需在该方法中创建任何新数组列表。
问题来了:
编写一个方法stutter,它将Strings 中的ArrayList 和integer k 作为参数,并将每个字符串替换为该字符串的k 个副本。例如,如果列表在调用方法之前存储了值["how", "are", "you?"],并且k 为4,则它应该在方法执行完成后存储值["how", "how", "how", "how", "are", "are", "are", "are", "you?", "you?", "you?", "you?"]。如果 k 为 0 或负数,则调用后列表应为空。
一种创建新数组列表的方法:
public static void stutter(ArrayList<String> list, int k) {
ArrayList<String> a = new ArrayList<String>();
String s = "";
if(k > 0) {
for(int i = 0; i < list.size(); i++) {
s = list.get(i);
for(int j = 0; j < k; j++) {
a.add(s);
}
}
}
}
在不创建新数组列表的情况下仅修改 ArrayList<String> list 的一种方法是什么?谢谢
【问题讨论】:
-
嗯,打电话给
list.add(...)? -
在你的方法中使用
list而不是a,但请注意这通常不是一个好主意,因为它可能会在以后引起问题,最好返回一个新的。 -
请记住,您可能希望将 for 循环更改为
j < k - 1,因为它已经包含一个s实例。订单重要吗? -
是的,我试过了,它给了我一个无限循环
-
谢谢大家得到解决方案。