gpt4 book ai didi

java - 每次数组列表中有重复值时,如何将数组列表拆分为子列表

转载 作者:行者123 更新时间:2023-11-29 04:46:55 26 4
gpt4 key购买 nike

我有以下数组列表,其中包含以下内容点 ID (1,2,3,4,1,8,5,6,8,9,7,9)。我正在使用 Java 7

我想知道如何将它分成子列表,即下面的子列表

(1,2,3,4,1)(8,5,6,8)(9,7,9)

我在尝试在循环中使用循环时遇到问题(即检查每个点从外循环与内循环中的每个其他点)得到
索引位置(starPosIndex 和 endPosIndex),其中有重复的点 id 和 ArrayList.sublist(startPosIndex,endPosIndex) 以获得正确的子列表

int startPos = 0;
int endPos = 0;
for (int j = 0; j < polygonList3.size(); j++){
Point pointToCheck = polygonList3.get(j);

for (int k = 1; k < polygonList3.size(); k++){
Point pointToCheck2 = polygonList3.get(k);
if (pointToCheck.getID() == pointToCheck2.getID()){
startPos = startPos + endPos;
endPos = endPos + k;
//startPos = startPos + endPos;
//for (int startPos = j; startPos < polygonList3.size(); startPos = (startPos) + endPos) {
//endPos = Math.min(startPos + endPos, polygonList3.size());
finalPolygonLists.add(new ArrayList<Point>(polygonList3.subList(startPos, endPos)));//originalPtsSublist2);
//}
}
}

最佳答案

我会通过以下方式解决:

  1. 分配一个 HashSet 以包含遇到的唯一值
  2. 为第一个子列表分配一个新列表
  3. 遍历整个列表,将每个值添加到集合中。当我们遇到一个已经在集合中的值时,我们已经完成了第一个子列表,所以清除集合,并分配一个新的子列表
  4. 迭代后,您将获得在 O(n) 运行时中获得的子列表列表

关于java - 每次数组列表中有重复值时,如何将数组列表拆分为子列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36772954/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com