现在有集合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}
关于#java#的问题:现在有集合A{1,2,3,4},B{5,6},根据A和B,固定返回C集合
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
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集合再组合在一起返回给前端。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报