带整数的集合,需要自己增加和减少它

时间:2016-10-30 15:54:56

标签: java collections task

我有一项任务,我遇到了一些问题 - 我猜想很难改变思维模式。

我需要创建一个集合,它保持整数并且必须执行以下函数:

  1. 按索引和值添加和删除元素(好吧,我认为它可以是ArrayListLinkedList,我是对的吗?)
  2. 如果要添加元素,则必须使用添加元素的值增加其他元素。
  3. 如果要删除元素,则必须使用添加元素的值减少其他元素。
  4. 最后两个函数..我没有线索如何制作它。可能有些人可以向我展示一个方向,我需要移动的地方以及我需要做什么?

    在我看来,我需要创建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]
    

4 个答案:

答案 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)

  1. 您可以使用ArrayList,无需在您的用例中使用链接列表
  2. 您需要遍历列表并将整数与现有值相加并将其添加到列表中
  3. 您需要在删除之前检查列表是否包含整数
  4. 你可以试试这段代码

            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]