📅  最后修改于: 2023-12-03 15:06:51.549000             🧑  作者: Mango
在处理数组时,有时候我们需要删除其中的重复条目,以便更好地进行后续操作。这时,我们可以使用Java中的TreeSet类来完成这个任务。下面是一个使用TreeSet从数组中删除重复条目的Java程序的示例:
import java.util.Arrays;
import java.util.TreeSet;
public class RemoveDuplicatesFromArray {
public static void main(String[] args) {
Integer[] arrayWithDuplicates = {1, 2, 3, 1, 2, 3, 4, 5};
// 使用TreeSet自动去重
TreeSet<Integer> uniqueSet = new TreeSet<>(Arrays.asList(arrayWithDuplicates));
// 将去重后的元素转换回数组
Integer[] arrayWithoutDuplicates = uniqueSet.toArray(new Integer[uniqueSet.size()]);
// 打印去重后的数组
System.out.println(Arrays.toString(arrayWithoutDuplicates));
}
}
该程序的执行结果为:
[1, 2, 3, 4, 5]
可以看到,使用TreeSet自动去重后,数组中的重复元素已经被删除,只剩下了唯一的元素。
下面是该程序的解释说明:
arrayWithDuplicates
。uniqueSet
,并将数组 arrayWithDuplicates
转换成一个List对象,并将其传递给TreSet的构造函数中。由于TreeSet中的元素是唯一的,因此TreeSet会自动去重。toArray
方法将去重后的元素转换回数组,并将其赋值给 arrayWithoutDuplicates
变量。因此,本程序通过使用TreeSet自动去重,实现了从数组中删除重复条目的功能。
同时,我们还可以自定义比较器来进行去重操作,下面是一个示例:
import java.util.Arrays;
import java.util.Comparator;
import java.util.TreeSet;
public class RemoveDuplicatesFromArray2 {
public static void main(String[] args) {
String[] arrayWithDuplicates = {"a", "b", "c", "A", "B", "C"};
// 使用自定义比较器去重
TreeSet<String> uniqueSet = new TreeSet<>(Comparator.comparing(String::toLowerCase));
uniqueSet.addAll(Arrays.asList(arrayWithDuplicates));
// 将去重后的元素转换回数组
String[] arrayWithoutDuplicates = uniqueSet.toArray(new String[uniqueSet.size()]);
// 打印去重后的数组
System.out.println(Arrays.toString(arrayWithoutDuplicates));
}
}
该程序使用自定义的比较器来进行去重操作,忽略了大小写,最终输出结果为:
[a, b, c]
因此,无论是使用自动去重还是自定义比较器去重,都可以方便地实现从数组中删除重复条目的功能。