从 Java 中的 ArrayList 获取唯一值您可以使用 Java 8 Stream API。

2022-08-31 10:36:19

我有一个有许多记录,一列包含气体名称为CO2 CH4 SO2等。现在我想检索不同的气体名称(唯一),而不从中重复。如何做到这一点?ArrayListArrayList


答案 1

您应该使用 Set。A 是不包含重复项的集合Set

如果您有一个包含重复项的列表,则可以获取如下所示的唯一条目:

List<String> gasList = // create list with duplicates...
Set<String> uniqueGas = new HashSet<String>(gasList);
System.out.println("Unique gas count: " + uniqueGas.size());

注意:此构造函数通过调用元素的 equals() 方法来标识重复项。HashSet


答案 2

您可以使用 Java 8 Stream API

方法 distinct 是一个中间操作,用于筛选流并仅允许将不同值(默认情况下使用 Object::equals 方法)传递给下一个操作。
我在下面为您的案例写了一个例子,

// Create the list with duplicates.
List<String> listAll = Arrays.asList("CO2", "CH4", "SO2", "CO2", "CH4", "SO2", "CO2", "CH4", "SO2");

// Create a list with the distinct elements using stream.
List<String> listDistinct = listAll.stream().distinct().collect(Collectors.toList());

// Display them to terminal using stream::collect with a build in Collector.
String collectAll = listAll.stream().collect(Collectors.joining(", "));
System.out.println(collectAll); //=> CO2, CH4, SO2, CO2, CH4 etc..
String collectDistinct = listDistinct.stream().collect(Collectors.joining(", "));
System.out.println(collectDistinct); //=> CO2, CH4, SO2