我有一项任务,我遇到了一些问题 - 我猜想很难改变思维模式。
我需要创建一个集合,它保持整数并且必须执行以下函数:
ArrayList
或LinkedList
,我是对的吗?)最后两个函数..我没有线索如何制作它。可能有些人可以向我展示一个方向,我需要移动的地方以及我需要做什么?
在我看来,我需要创建LinkedList
(它允许我通过索引和值删除元素)并使用一些包装类型作为列表。但是如何?
更新
要澄清(来自评论),这是调用add()
和remove()
的理想结果:
add(1): [1]
add(2): [3, 2] // Existing values are incremented
add(3): [6, 5, 3]
add(4): [10, 9, 7, 4]
add(0): [10, 9, 7, 4, 0]
add(5): [15, 14, 12, 9, 5, 5]
remove(3): [15, 14, 12, 9, 5, 5] // Value not found, so no change
remove(9): [6, 5, 3, -4, -4] // All values are decremented
remove(5): [1, -2, -9, -9]
答案 0 :(得分:1)
我会使用ArrayList。您可以使用
添加特定索引中的元素add(index, value)
您可以使用
按索引删除元素remove(index)
对于第二个函数,您可以迭代完整的ArrayList并添加新元素的值。之后,将其添加到ArrayList。对于第三个函数,您可以采用相反的方式:先将其删除,然后将其值减少为retainig元素。
最后一点,记住你不应该(实际上我认为你不能)在迭代时删除ArrayList的一个元素。因此,如果要按值删除元素,可以迭代ArrayList,保留要删除的元素的索引,然后删除它们。希望它有所帮助。
答案 1 :(得分:0)
我认为您需要首先熟悉Java API Collection,当您这样做时,我非常确定您能够解决您想要的问题。 我推荐这个网站:http://www.java2novice.com/java-collections-and-util
答案 2 :(得分:0)
如果我理解你的问题,你不需要改变集合中的元素来实现加法和减法(来自所有元素):
您可以在变量(我们称之为diff
)中存储集合中元素与所需结果之间的差异,并在每次添加或删除元素时更新diff
。
请注意,添加元素时,可能需要根据diff
更改添加的元素。
示例:
将1
添加到数组中:[0]
,diff=1
,array + diff:[1]
将2
添加到数组中:[0, -1]
,diff=3
,array + diff:[3, 2]
将3
添加到数组中:[0, -1, -3]
,diff=6
,array + diff:[6, 5, 3]
从数组中删除5
(实际删除5-diff
):[0, -3]
,diff=1
,数组+差异:[1,-2]
答案 3 :(得分:0)
你可以试试这段代码
public static void main(String[] args) throws Exception {
List<Integer> list = new ArrayList<>();
addAndSum(list, 1);
System.out.println(list);
addAndSum(list, 2);
System.out.println(list);
addAndSum(list, 3);
System.out.println(list);
addAndSum(list, 4);
System.out.println(list);
addAndSum(list, 0);
System.out.println(list);
addAndSum(list, 5);
System.out.println(list);
removeAndSustract(list, 3);
System.out.println(list);
removeAndSustract(list, 9);
System.out.println(list);
removeAndSustract(list, 5);
System.out.println(list);
}
private static void addAndSum(List<Integer> list, Integer i) {
for (int j = 0; j < list.size(); j++)
list.set(j, list.get(j) + i);
list.add(i);
}
private static void removeAndSustract(List<Integer> list, int i) {
if (list.contains(i)) {
list.remove((Integer) i);
for (int j = 0; j < list.size(); j++)
list.set(j, list.get(j) - i);
}
}
输出
[1]
[3, 2]
[6, 5, 3]
[10, 9, 7, 4]
[10, 9, 7, 4, 0]
[15, 14, 12, 9, 5, 5]
[15, 14, 12, 9, 5, 5]
[6, 5, 3, -4, -4]
[1, -2, -9, -9]