假设我们有这个数组:String[] arr1 = {"a", "b", "c", "a"};
我要做的是删除重复的String(在本例中为"a"
)并将其值添加到另一个名为duplicates的String []中。当副本添加到“duplicates”数组时,它在数组arr1中错误地发生的次数会在它旁边连接。 (recurredValue + amount
)所以在这个例子中它将是a 1
。我之前搜索过这个,所有这些都包括Lists,ArrayLists或Sets的使用。请不要使用它们中的任何一个。
答案 0 :(得分:1)
使用以下代码: -
public static String[] removeDuplicates(String[] numbersWithDuplicates) {
// Sorting array to bring duplicates together
Arrays.sort(numbersWithDuplicates);
String[] result = new String[numbersWithDuplicates.length];
String[] duplicate = new String[numbersWithDuplicates.length];
String previous = numbersWithDuplicates[0];
result[0] = previous;
int counter=1;
int duplicateCounter=0;
for (int i = 1; i < numbersWithDuplicates.length; i++) {
String ch = numbersWithDuplicates[i];
if (previous != ch) {
result[counter++] = ch;
}
else
{
duplicate[duplicateCounter++]=ch;
}
previous = ch;
}
for (int i = 0; i < result.length; i++) {
System.out.println(result[i]);
}
System.out.println("Duplicate Values are ---");
for (int i = 0; i < duplicate.length; i++) {
System.out.println(duplicate[i]);
}
return result;
}
答案 1 :(得分:0)
也许这样你可以使用
public static void main(String[] args) {
String[] arr1 = {"a", "b", "c", "a", "a"};
String[] duplicates = new String[arr1.length];
boolean d = false;
int count = 0;
String dup = "";
for(int i = 0;i < arr1.length;i++){
count = 0;
dup = "";
d = false;
for(int j = 0;j < arr1.length;j++){
if(i != j){
if(arr1[i].equals(arr1[j]) && !arr1[i].equals("")){
arr1[j] = "";
d = true;
count++;
dup = arr1[i];
}
}
}
if(d){
duplicates[i] = dup + count;
d = false;}
}
for(int k = 0;k < duplicates.length;k++)
System.out.println(duplicates[k]);
}
答案 2 :(得分:0)
嗯,一个解决方案是创建2个数组,其中一个包含唯一的字符串,另一个包含整数计数器。在索引样本字符串数组时,添加唯一字符串并增加事件。这不是一个非常优雅或有效的解决方案,但它应该有效。