List<String> 去掉null java
时间: 2023-11-11 20:50:43 浏览: 46
要去掉 List<String> 中的 null 值,你可以使用 Java 8 的 Stream API 来实现。你可以使用 `filter` 方法来过滤掉 null 值。下面是一个示例代码:
```java
List<String> list = Arrays.asList("A", null, "B", null, "C");
List<String> filteredList = list.stream()
.filter(Objects::nonNull)
.collect(Collectors.toList());
System.out.println(filteredList);
```
这段代码将会输出 `["A", "B", "C"]`,即过滤掉了原始列表中的 null 值。
相关问题
public Map<String, List<String>> pastfree(List<FreezeAuthorityOut> data,Map<String, List<String>> map){ for (FreezeAuthorityOut authority : data) { List<String> list = new ArrayList<>(); for (FreezeAuthorityOut offlineLockAuthority : data) { if (authority.getLockUid().equals(offlineLockAuthority.getLockUid()) && map != null) { List<String> key = map.get(authority.getLockUid()); if (key == null) { list.add(authority.getCardNumber()); } } } if (map != null) { List<String> key = map.get(authority.getLockUid()); if (key == null) { //去重 list = list.stream().distinct().collect(Collectors.toList()); map.put(authority.getLockUid(), list); } } } return map; } 如何优化
在您提供的代码中,有几个地方可以进行优化来提高性能和简化代码:
1. 避免重复获取`map.get(authority.getLockUid())`的值:在两个地方都有类似的代码,您可以在进入循环之前将其存储在一个变量中,以避免重复的`get`操作。
2. 使用`Set`代替`List`进行去重:在添加元素到`list`之后,可以使用`HashSet`来去除重复元素,然后再转换回`List`。
3. 使用Java 8的新特性来简化代码:使用Lambda表达式和流操作可以使代码更加简洁和易读。
下面是优化后的代码示例:
```java
public Map<String, List<String>> pastfree(List<FreezeAuthorityOut> data, Map<String, List<String>> map) {
for (FreezeAuthorityOut authority : data) {
if (map != null && !map.containsKey(authority.getLockUid())) {
List<String> list = data.stream()
.filter(a -> a.getLockUid().equals(authority.getLockUid()))
.map(FreezeAuthorityOut::getCardNumber)
.distinct()
.collect(Collectors.toList());
map.put(authority.getLockUid(), list);
}
}
return map;
}
```
在优化后的代码中,我们使用了流操作和Lambda表达式来简化循环和去重的过程。首先,我们检查`map`是否为空以及是否已经包含了当前`authority`的`LockUid`。然后,我们使用流操作来筛选出具有相同`LockUid`的元素,并提取`CardNumber`属性。最后,我们使用`distinct()`方法去除重复的元素,并将结果存储到`map`中。
请注意,这只是一种可能的优化方法,具体优化策略可能需要根据实际情况进行调整。
List<String>集合 如何转成 String[]
将 List<String> 集合转换为 String[] 数组的过程比较简单,只需要使用 List 的 toArray 方法即可完成转换。
下面是将 List<String> 转换为 String[] 的 Java 代码示例:
```java
List<String> list = ...;
// 使用 List 的 toArray 方法将 List<String> 转换为 String[] 数组
String[] stringArray = list.toArray(new String[list.size()]);
```
其中,toArray 方法的参数需要传入一个类型为 T[] 的数组,该数组的长度至少为 list.size(),否则 toArray 方法将创建一个新的数组。在这里,我们创建了一个 String[] 数组,将其作为 toArray 方法的参数传入即可完成转换。
需要注意的是,如果 List 中包含了 null 元素,那么转换后的 String[] 数组中对应的位置会是 null。如果希望去除 null 元素,可以使用 Java 8 中新增的 stream 方法进行过滤,如下所示:
```java
List<String> list = ...;
// 使用 List 的 stream 方法过滤掉 null 元素,并将结果转换为 String[] 数组
String[] stringArray = list.stream().filter(Objects::nonNull).toArray(String[]::new);
```
这里使用了 Objects 的 nonNull 静态方法来过滤 null 元素,然后使用 toArray 方法将结果转换为 String[] 数组。