【发布时间】:2017-05-25 18:59:26
【问题描述】:
我有一个ArrayList<String>,其中包含以下内容:
2#3#1#0
1#0#4#1
9#2#5#0
4#2#3#2
1#1#2#1
输出:6 个不同的数字。
我正在尝试编写一个算法来删除突出显示的数字的重复项,这样我就可以使用计数器来查看所有这些位置总共有多少不同的数字。
我尝试了很多方法,包括以下一些:[Java 使用循环从数组中删除重复项][1]、[Java - 删除 ArrayList 中的重复项][2]、[如何查找重复项中的第一个选项在 Java 数组中?][3] 等等。我至少花了 5 到 10 个小时试图弄清楚我做错了什么,但我做不到,所以我求助于你。
大多数时候,我在网上找到的解决方案似乎都适用于简单的东西,但对我来说却不是。其中,当我尝试打印不同的字符时,它总是返回错误的int 数字。
我也试过,也试过把每一行数字分成不同的int Array[],然后比较,但它不会捕捉到所有不同的值。
在另一个例子中,我总共有 5 个不同的数字,结果我一直得到“4 个不同”,所以我什至尝试了 long n = ArrayList.stream().distinct().count(); 只是为了看看我是否做错了什么,但即使这个东西也返回了“4 个不同”的数字。
我知道最简单的方法是使用Set 和Map,但我不想那样做。我想要一个算法。
编辑:
我尝试过的许多事情之一如下:
for (int m = 0; m < (size-1); m++){
for (int j = m + 1; j < size; j++){
if (ArrayList.get(j).charAt(0) != ArrayList.get(m).charAt(0)){
continue;
}
current++;
ArrayList.remove(j).charAt(0);
j--;
size--;
}
}
有了这个,我必须用另一个ArrayList.get().charAt(4)。
EDIT2:
我在 [here][1] 找到了以下代码,但在这种情况下如何实现呢?
public static <T> ArrayList<T> uniquefy(ArrayList<T> myList) {
ArrayList <T> uniqueArrayList = new ArrayList<T>();
for (int i = 0; i < myList.size(); i++){
if (!uniqueArrayList.contains(myList.get(i))){
uniqueArrayList.add(myList.get(i));
}
}
return uniqueArrayList;
}
编辑3:
我找到了一个可能的解决方案,但它给了我一个 IndexOutOfBoundsException。
我已将数字 2, 1, 9, 4, 1 放入 Array1 和 1, 4, 5, 3, 2 放入 Array2,但是当我尝试比较它们,我得到了提到的错误。
boolean stopSequence = false;
for (int i = 0; i < Array1.length; i++){
for (int a = 0; a < Array2.length && !stopSequence;){
if (Array1[i] != Array2[a]){
Array1[i] = 0;
a++;
}
if (Array1[i] == Array2[a]){
Array1[i] = 0;
stopSequence = true;
}
}
stopSequence = false;
}
[1]: https://stackoverflow.com/questions/26998156/java-remove-duplicates-from-array-using-loops
[2]: https://stackoverflow.com/questions/2435156/java-removing-duplicates-in-an-arraylist
[3]: http://javarevisited.blogspot.com.es/2015/06/3-ways-to-find-duplicate-elements-in-array-java.html
[4]: https://stackoverflo
w.com/questions/203984/how-do-i-remove-repeated-elements-from-arraylist?rq=1
【问题讨论】:
-
给定输入示例所需的结果是什么?
-
我会使用计数器并打印,在这种情况下,“6 个不同的数字”。
-
当您的代码不工作时...在此处显示。见minimal reproducible example
-
您的问题到底是什么?我们不会为您编写代码,您也没有发布任何代码。您还拒绝将所有数字放在一组中,然后打印该组的大小的明显解决方案。为什么?
-
@GhostCat 好的。我将提出我尝试过的“解决方案”之一。
标签: java arrays arraylist duplicates