如何在Java中去重字符串数组?
发布时间:2023-06-24 20:21:47
在Java中去重字符串数组可以使用不同的方法和数据结构。以下是一些常见的方法:
1. 使用Set:可以将字符串数组转换为Set集合,因为Set中的元素是不可重复的。然后再将Set转换回数组即可。
String[] arr = {"apple", "banana", "orange", "banana"};
Set<String> set = new HashSet<>(Arrays.asList(arr));
String[] newArr = set.toArray(new String[0]);
2. 使用List和contains方法:将字符串数组转换为List,然后遍历数组,判断List中是否已经包含该元素,如果没有,则添加到List中。
String[] arr = {"apple", "banana", "orange", "banana"};
List<String> list = new ArrayList<>();
for (String s : arr) {
if (!list.contains(s)) {
list.add(s);
}
}
String[] newArr = list.toArray(new String[0]);
3. 使用Stream的distinct方法:使用Java 8的Stream API,可以使用distinct方法对数组进行去重。
String[] arr = {"apple", "banana", "orange", "banana"};
String[] newArr = Arrays.stream(arr).distinct().toArray(String[]::new);
4. 使用Map:将字符串数组的元素作为Map的键,值可以由一个任意的对象代替,这里使用Boolean类型代表是否重复。遍历数组中的每个元素,如果Map中不存在该键,就将该键插入Map,并赋值为true。否则,忽略该元素。
String[] arr = {"apple", "banana", "orange", "banana"};
Map<String, Boolean> map = new HashMap<>();
for (String s : arr) {
map.put(s, true);
}
String[] newArr = map.keySet().toArray(new String[0]);
5. 使用Arrays类的工具方法:使用Arrays工具类的sort方法,将数组排序,然后遍历数组,使用Arrays类的equals方法来判断当前元素是否与前一个元素相等,从而去除重复元素。
String[] arr = {"apple", "banana", "orange", "banana"};
Arrays.sort(arr);
int count = 0;
String[] newArr = new String[arr.length];
for (int i = 0; i < arr.length; i++) {
if (i == 0 || !arr[i].equals(arr[i - 1])) {
newArr[count++] = arr[i];
}
}
newArr = Arrays.copyOf(newArr, count);
无论使用哪种方法,都可以实现对字符串数组的去重。但是在实际应用中,应该根据具体的情况选择合适的方法,比如考虑数组长度、重复元素的数量、运行效率等因素。
