首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >集合,则需要对其本身进行增减。

集合,则需要对其本身进行增减。
EN

Stack Overflow用户
提问于 2016-10-30 15:54:55
回答 3查看 122关注 0票数 0

我有一项任务,我也有一些问题--我想很难改变心态。

我需要创建一个集合,它保留整数,并且必须执行如下功能:

  1. 通过索引和值添加和删除元素(好的,我认为可以是ArrayListLinkedList,对吗?)
  2. 如果要添加元素,则必须通过添加元素的值来增加其他元素。
  3. 如果要删除元素,则其他元素必须减少添加元素的值。

最后两个函数.我不知道怎么做。也许你们中的一些人可以给我指明一个方向,在哪里我需要移动,我需要做什么?

在我看来,我需要创建LinkedList (它允许我通过索引和值删除元素),并对list使用一些包装类型。但是怎么做呢?

更新

为了澄清(从注释中),这是调用add()remove()所需的结果。

代码语言:javascript
复制
   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]
EN

回答 3

Stack Overflow用户

发布于 2016-10-30 16:04:32

我认为您需要首先熟悉Java集合,当您这样做时,我非常肯定您将能够解决您想要的问题。我推荐这个网站:http://www.java2novice.com/java-collections-and-util

票数 0
EN

Stack Overflow用户

发布于 2016-10-30 16:24:56

如果我正确理解了您的问题,您不需要更改集合中的元素来实现加法和减法(从所有元素):

您可以将集合中的元素与所需结果之间的差异存储在变量(让我们称之为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、数组+ diff:[1,-2]

票数 0
EN

Stack Overflow用户

发布于 2016-10-31 08:53:32

  1. 您可以在用例中使用ArrayList而不需要使用链接列表
  2. 您需要迭代列表,并将整数与现有值相加,并将其添加到列表中。
  3. 在删除之前,您需要检查列表是否包含整数。

你可以试试这段代码

代码语言:javascript
复制
        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);
        }
    }

输出量

代码语言:javascript
复制
[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]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40330862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档