帮我写一个java的List<String>去重,保留最后一次出现的值
时间: 2024-03-27 17:37:54 浏览: 79
好的,以下是一个简单的Java代码示例,实现了List<String>去重,保留最后一次出现的值:
```java
public static List<String> removeDuplicate(List<String> list) {
List<String> result = new ArrayList<>();
Map<String, Integer> map = new LinkedHashMap<>();
for (int i = list.size() - 1; i >= 0; i--) {
map.put(list.get(i), i);
}
for (Map.Entry<String, Integer> entry : map.entrySet()) {
result.add(entry.getKey());
}
return result;
}
```
这个方法首先创建了一个空的List<String>对象`result`,然后使用LinkedHashMap记录每个字符串最后一次出现的位置。最后,遍历这个map,将所有的键添加到结果List中并返回。这样就能保留最后一次出现的值了。
相关问题
帮我写一个java使用流把List<String>去重,保留最后一次出现的值
当然可以,以下是使用Java 8 Stream实现List<String>去重,保留最后一次出现的值的示例代码:
```java
public static List<String> removeDuplicate(List<String> list) {
return new ArrayList<>(list.stream()
.collect(Collectors.toMap(Function.identity(), i -> i, (a, b) -> b, LinkedHashMap::new))
.keySet());
}
```
这个方法使用了Java 8的Stream API,将List<String>转换成一个Map<String, String>,其中键是列表中的字符串,值是字符串本身。在收集器中,`Function.identity()`作为键,`i -> i`作为值,`(a, b) -> b`指定了当出现重复键时保留最后一个值。最后,`LinkedHashMap::new`保证了返回的Map会按照插入顺序排序。最后通过`Map.keySet()`方法返回去重后的结果,并将其转换成List。
java list<string> 去重
在 Java 中,可以使用 HashSet 来去除一个 List<String> 中的重复元素。示例代码如下:
```
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> myList = new ArrayList<>();
myList.add("apple");
myList.add("orange");
myList.add("banana");
myList.add("apple");
myList.add("grape");
myList.add("banana");
HashSet<String> mySet = new HashSet<>(myList);
myList.clear();
myList.addAll(mySet);
for (String s : myList) {
System.out.print(s + " ");
}
System.out.println();
}
}
```
这段代码首先定义了一个 List<String>,其中包含了重复的元素。接着,将该 List<String> 中的元素转存到 HashSet<String> 中,HashSet<String> 会自动去重。最后,将去重后的元素转存回原来的 List<String> 中。最终输出的结果是不包含重复元素的 List<String>。
需要注意的是,这种方法会改变原来 List<String> 的顺序,因为 HashSet<String> 不保证元素的顺序。如果需要保持原来的顺序,可以使用 LinkedHashSet<String>。
阅读全文