醉看红尘 2023-06-01 11:07 采纳率: 100%
浏览 105
已结题

关于#java#的问题:现在有集合A{1,2,3,4},B{5,6},根据A和B,固定返回C集合

现在有集合A{1,2,3,4,5},B{5,6,7},根据A和B,生成集合C,C中的第一个元素是A中第一项与B中第一项之和,C中的第二个元素是A中第二项与B中第二项之和,C中的第三个元素是A中第三个与B中第三个之和,C中的第四个元素是A中第四个与B中第一个之和,C中的第五个元素是A中第五个与B中第二个之和,C中的第六个元素是A中第一个与B中第三个之和,以此类推。
#实际生产中,A集合和B集合可能有上千个元素。生产中A集合可能有10000个元素,B集合可能有100个元素,每次C集合1000个返回给前端,然后再取,再返回给前端。如何实现
#问题中的C集合应该为{6,8,10,9,11,8,7,9,11,10,7,9,8,10,12}

  • 写回答

9条回答 默认 最新

  • 语言-逆行者 2023-06-02 09:02
    关注

    基于new bing的编写:
    可以通过循环遍历A和B集合来生成C集合。具体操作如下:

    • 定义一个空的集合C。

    • 使用for循环遍历A和B集合,每次取出相同位置的元素,进行加法操作,将结果添加到C集合中。

    • 对于A和B集合长度不一致的情况,可以使用取模运算符%对B集合的长度进行取余,实现循环使用B集合中的元素。

    • 如果A集合或B集合为空集,直接返回空集。
      参考代码如下:

    public static List<Integer> generateC(List<Integer> A, List<Integer> B) {
        List<Integer> C = new ArrayList<>();
        if (A.isEmpty() || B.isEmpty()) {
            return C;
        }
        int size = Math.max(A.size(), B.size());
        for (int i = 0; i < size; i++) {
            int sum = A.get(i % A.size()) + B.get(i % B.size());
            C.add(sum);
        }
        return C;
    }
    
    
    

    对于生产环境中A集合可能很大的情况,可以将A和B集合进行分段处理,每次处理一定数量的元素,并将结果返回给前端。可以设置一个固定的批次大小,例如1000个元素,每次处理1000个元素,直到处理完整个集合。代码如下:

    public static List<List<Integer>> generateC(List<Integer> A, List<Integer> B, int batchSize) {
        List<List<Integer>> result = new ArrayList<>();
        if (A.isEmpty() || B.isEmpty()) {
            return result;
        }
        int size = Math.max(A.size(), B.size());
        for (int i = 0; i < size; i += batchSize) {
            int endIndex = Math.min(i + batchSize, size);
            List<Integer> subA = A.subList(i, endIndex);
            List<Integer> subB = B.subList(i, endIndex);
            List<Integer> C = new ArrayList<>();
            for (int j = 0; j < subA.size(); j++) {
                int sum = subA.get(j % subA.size()) + subB.get(j % subB.size());
                C.add(sum);
            }
            result.add(C);
        }
        return result;
    }
    
    
    

    可以将生成的各个C集合再组合在一起返回给前端。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(8条)

报告相同问题?

问题事件

  • 系统已结题 6月14日
  • 已采纳回答 6月6日
  • 请回答用户的提问 6月2日
  • 创建了问题 6月1日

悬赏问题

  • ¥15 from seleniumwire import webdriver 在抓取http://链接的时候会自动转https://这个怎么解决
  • ¥15 hive直连数据库模式插入mysql表数据失败(相关搜索:数据库)
  • ¥30 不会,学习,有偿解答
  • ¥15 SQL查询语句报错(检查)
  • ¥15 此表中公式应该怎么写
  • ¥15 求HI-TECH PICC 9.50 PL3安装包
  • ¥15 下载ctorch报错,求解
  • ¥15 如何入门学习c语言,单片机
  • ¥15 idea 编辑语言的选择
  • ¥15 Windows下部署Asmjit