stream.map字段long转string
时间: 2023-06-12 11:07:20 浏览: 426
可以使用Java 8 Stream API中的map方法来将一个字段从long类型转换为String类型。具体实现可以使用lambda表达式来定义一个转换函数,然后将该函数传递给map方法。示例如下:
```java
List<Long> longList = Arrays.asList(1L, 2L, 3L, 4L, 5L);
List<String> stringList = longList.stream()
.map(l -> Long.toString(l))
.collect(Collectors.toList());
```
在上面的示例中,我们首先定义了一个包含long类型元素的列表longList,然后使用Stream API将其转换为一个包含String类型元素的列表stringList。具体来说,我们先调用stream方法将列表转换为一个流,然后使用map方法将每个long类型元素转换为String类型,最后使用collect方法将转换后的结果收集到一个列表中。在map方法中,我们使用Long.toString方法将long类型值转换为String类型。
相关问题
Map<Long, String> tenantMap = tenantList.stream()
这是Java中利用Stream API对集合进行操作的一个例子。在这个片段里,`tenantMap`是一个键值对的映射(Map),其中键(Long)是长整型,值(String)是字符串。`tenantList`是一个列表,可能是Tenant类型的对象列表。
`stream()`方法将`tenantList`转换成了流(Stream),然后通过`.map()`函数对每个元素进行处理。这里的具体操作没有完全展示,通常会在`.map()`内部使用lambda表达式,将每个Tenant对象转化为`(Long, String)`形式的元组,比如提取某个字段作为键,另一个字段作为值。
最终结果是创建了一个新的Map,其中包含了`tenantList`中每个元素按照指定规则转换后的键值对。例如:
```java
Map<Long, String> tenantMap = tenantList.stream()
.map(tenant -> (long) tenant.getId(), tenant -> tenant.getName())
.collect(Collectors.toMap());
```
这里的假设是`getId()`方法返回Long类型,`getName()`方法返回String类型。
优化以下代码: public Map<String, List<String>> getUniquenessTableFieldList(Long planId, String datasourceName) { Map<String,List<String>> tableColumnTree = new HashMap<>(); // 按规则和字段过滤taskId List<DataQualityPlanRelationEntity> collect = dataQualityPlanRelationService.relationInfoSearch(planId) .stream() // 过滤出唯一性校验的规则 .filter(dataQualityPlanRelationEntity -> dataQualityPlanRelationEntity.getRuleTemplateId().equals(6L)) .collect(Collectors.toList()); for (DataQualityPlanRelationEntity dataQualityPlanRelationEntity : collect) { if(CollectionUtil.isEmpty(tableColumnTree.get(dataQualityPlanRelationEntity.getTableName()))){ List<String> columnList = new ArrayList<>(); columnList.add(dataQualityPlanRelationEntity.getColumnName()); tableColumnTree.put(dataQualityPlanRelationEntity.getTableName(), columnList); } else { List<String> columnList = tableColumnTree.get(dataQualityPlanRelationEntity.getTableName()); if(columnList.contains(dataQualityPlanRelationEntity.getColumnName())){ columnList.add(dataQualityPlanRelationEntity.getColumnName()); } } } return tableColumnTree; }
可以尝试使用 Java 8 的 Stream API 来优化代码,如下所示:
```
public Map<String, List<String>> getUniquenessTableFieldList(Long planId, String datasourceName) {
List<DataQualityPlanRelationEntity> collect = dataQualityPlanRelationService.relationInfoSearch(planId)
.stream()
.filter(dataQualityPlanRelationEntity -> dataQualityPlanRelationEntity.getRuleTemplateId().equals(6L))
.collect(Collectors.toList());
return collect.stream().collect(Collectors.groupingBy(
DataQualityPlanRelationEntity::getTableName,
Collectors.mapping(DataQualityPlanRelationEntity::getColumnName, Collectors.toList())
));
}
```
这段代码使用了 `groupingBy` 方法来将数据按表名分组,然后使用 `mapping` 方法将每个表名对应的 `DataQualityPlanRelationEntity` 对象的 `columnName` 属性提取出来,最终得到每个表名对应的字段列表。这样就省去了手动循环构建 `Map` 对象的复杂度。
阅读全文