删除字符串数组中的重复字符串

我正在基于Java中的字符串处理制作一个程序,我需要从字符串数组中删除重复的字符串。 在此程序中,所有字符串的大小都相同。

作为字符串数组的’array’包含许多字符串,其中两个字符串彼此相似。 因此,使用下面的代码,必须删除重复的字符串,但不会删除它。

如何删除重复的字符串?

我使用以下代码。

for(int s=0;s<array.length-1;s++) { for(int m=0;m<array.length;m++) { for(int n=0;n<array[m].length();n++) { if(array[s].charAt(n)==array[m].charAt(n)) { continue; } else break; } if(n==array[m].length()) { ArrayUtils.removeElement(array, array[s]); } } 

这会奏效

 array = new HashSet(Arrays.asList(array)).toArray(new String[0]); 

或者只使用HashSet而不是数组。

除非这是[homework]否则我会使用Set

 String[] array = Set uniqueWords = new HashSet(Arrays.asList(array)); 
 Set set = new HashSet(); Collections.addAll(set, array); 

或者从…开始

 for(int s=0;s 
 import java.util.*; public class Stringarray { public static void main(String args[]){ String[] name = {"aim","rajesh","raju","aim"}; Set myset = new HashSet(); Collections.addAll(myset,name); System.out.println(myset); } } 
  • 为什么不使用String.equals()进行比较而不是手动迭代字符串中的字符?
  • 你的逻辑实际上是有缺陷的:对于array[s] == "12345"array[m] == "123"它会声称它们是相等的
  • 而且,在你的内部循环for(int m=0;m m在某些时候也会变得等于s ,所以你要将一个字符串与它自己进行比较

这些注释假设您需要使用自己的代码实现删除逻辑,而不允许使用类库。 如果不是这样,正如其他人所指出的那样,使用HashSet是最简单的方法。

为什么不删除最内部循环而不支持String.equals(String)

在第一次迭代中,您将比较array [0]与数组[0]相等,并将其删除。 然后,您将原始数组[1]与数组中的所有其他元素进行比较,如果它们相等,则删除数组[1](而不是另一个)。

有一些问题,如果有一些重复的字符串,你要删除第一个,这将减少数组的大小而不减少r所以,数组中的一些字符串被跳过。

我会使用强制唯一性的数据结构,例如Set。

如果你的数组中有3个相等的字符串会发生什么,我不确定会发生什么。

我相信你会遇到一些ArrayIndexOutOfBoundsException

我认为最后的if条件应该是if(n ==(array [m] .length() – 1))

话虽如此,您似乎正在尝试实现String.equals()方法在内部循环中所执行的操作。

  String[] arr = {"w10","w20","w10","w30","w20","w40","w50","w50"}; List arrList = new ArrayList(); int cnt= 0; //List arrList = Arrays.asList(arr); List lenList = new ArrayList(); for(int i=0;i 

建议的解决方案不保持元素的顺序。 如果您使用Java 8或更高版本并希望维护订单,则可以按如下方式使用流:

 array = Arrays.stream(array).distinct().toArray(String[]::new); 

完整示例: https : //www.javacodeexamples.com/java-string-array-remove-duplicates-example/849

重复整数删除:这是完美的答案///哈里斯///

 public static void duplicateRemove(int[] arr) { int temp = 0; for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr.length; j++) { if (arr[i] < arr[j]) { temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } int count; for (int j = 0; j < arr.length;) { count = 1; for (int i = j + 1; i < arr.length; i++) { if (arr[i] == arr[j]) { count++; } else break; } System.out.println(arr[j] + " is : " + count); j += count; } }