📜  比较两个列表并删除重复项 java - TypeScript (1)

📅  最后修改于: 2023-12-03 14:55:56.809000             🧑  作者: Mango

比较两个列表并删除重复项

在编程中,我们经常需要比较两个列表并去除其中重复的元素。在Java和TypeScript中,有多种方法可以实现这个功能。下面将介绍一些常用的方法。

Java中使用HashSet

在Java中,可以使用HashSet来实现去除重复元素。HashSet是一个不允许重复元素的集合,当向HashSet中添加元素时,如果该元素已经存在于集合中,则不会再次添加。

List<String> list1 = new ArrayList<>(Arrays.asList("apple", "banana", "orange"));
List<String> list2 = new ArrayList<>(Arrays.asList("banana", "cherry", "orange"));

Set<String> set = new HashSet<>(list1);
set.addAll(list2);
List<String> result = new ArrayList<>(set);

System.out.println(result); // [orange, banana, apple, cherry]

以上代码首先创建了两个列表list1和list2,然后将list1中的元素添加到HashSet中,并使用addAll方法将list2中的元素也添加到HashSet中。由于HashSet不允许重复元素,因此重复的元素只会被添加一次。最后,将HashSet中的元素转换成列表并输出。

TypeScript中使用filter

在TypeScript中,可以使用filter方法来去除重复元素。filter方法可以对数组中的每个元素进行检查,并返回满足指定条件的元素。

const list1:string[] = ["apple", "banana", "orange"];
const list2:string[] = ["banana", "cherry", "orange"];

const result = list1.concat(list2).filter((item, index, array) => {
  return array.indexOf(item) === index;
});

console.log(result); // ["apple", "banana", "orange", "cherry"]

以上代码首先创建了两个列表list1和list2,然后使用concat方法将它们合并为一个列表。然后使用filter方法,对数组中的每个元素进行检查,如果该元素第一次出现在数组中,则返回true,否则返回false。最后,返回满足该条件的元素列表。