Set<String> 里面 要把其中一个String改成另外一个
时间: 2024-01-16 07:03:18 浏览: 36
可以使用 Set 的 remove() 方法将要修改的 String 删除掉,然后再使用 add() 方法将修改后的 String 添加进去即可。例如:
```java
Set<String> set = new HashSet<>();
set.add("hello");
set.add("world");
set.remove("hello");
set.add("hi");
System.out.println(set); // 输出 [hi, world]
```
相关问题
public List<String> compareList(List<GoodsSku> list1, List<GoodsSku> list2) { List<String> result = new ArrayList<>(); // 将list1和list2的skuAttribute字段的值分割、排序后存入set中 Set<String> set1 = new HashSet<>(); Set<String> set2 = new HashSet<>(); list1.forEach(item -> set1.add(Arrays.stream(item.getSkuAttribute().split(":")).sorted().collect(Collectors.joining(":")))); list2.forEach(item -> set2.add(Arrays.stream(item.getSkuAttribute().split(":")).sorted().collect(Collectors.joining(":")))); // 遍历set1,如果set2中包含当前元素,则说明该skuAttribute字段的值重复,将其加入结果集中 for (String sku : set1) { if (set2.contains(sku)) { result.add(sku); } } return result; }把这段代码改成返回的是整个goodsSku的实体list
好的,可以参考下面的代码实现:
```
public List<GoodsSku> compareList(List<GoodsSku> list1, List<GoodsSku> list2) {
List<GoodsSku> result = new ArrayList<>();
// 将list1和list2的skuAttribute字段的值分割、排序后存入set中
Set<String> set1 = new HashSet<>();
Set<String> set2 = new HashSet<>();
list1.forEach(item -> set1.add(Arrays.stream(item.getSkuAttribute().split(":")).sorted().collect(Collectors.joining(":"))));
list2.forEach(item -> set2.add(Arrays.stream(item.getSkuAttribute().split(":")).sorted().collect(Collectors.joining(":"))));
// 遍历list1,如果list2中包含当前元素,则说明该skuAttribute字段的值重复,将其加入结果集中
for (GoodsSku sku : list1) {
String sortedSku = Arrays.stream(sku.getSkuAttribute().split(":")).sorted().collect(Collectors.joining(":"));
if (set2.contains(sortedSku)) {
result.add(sku);
}
}
return result;
}
```
注意,这里需要将遍历的对象从set改成list1,因为我们需要返回的是list1中与list2重复的GoodsSku实体对象。同时,需要在遍历list1时对skuAttribute字段进行排序后再进行比较。
Set<String> set = new HashSet<>(); for (SeriousProdChangeBO seriousProdChangeBO : dataList) { set.add(seriousProdChangeBO.getChangePeopleEmail()); set.add(seriousProdChangeBO.getRiskLeaderFirstEmail()); } 这个能改成 lamda表达式么
当然可以将这段代码改写成Lambda表达式。Lambda表达式是Java 8引入的一种简洁的语法,用于编写函数式接口的实现。
你可以使用`forEach`方法来遍历`dataList`,然后使用Lambda表达式将元素添加到集合中。以下是修改后的代码示例:
```java
Set<String> set = new HashSet<>();
dataList.forEach(seriousProdChangeBO -> {
set.add(seriousProdChangeBO.getChangePeopleEmail());
set.add(seriousProdChangeBO.getRiskLeaderFirstEmail());
});
```
在Lambda表达式中,箭头`->`前面是参数列表,后面是方法体。在这个示例中,参数`seriousProdChangeBO`代表`dataList`中的每个元素,然后将其添加到集合中。
请注意,Lambda表达式只能用于函数式接口,即只有一个抽象方法的接口。在这个示例中,`forEach`方法接受一个函数式接口作为参数,因此可以使用Lambda表达式来实现接口的抽象方法。