【发布时间】:2021-02-27 17:37:38
【问题描述】:
我做了一个列表合并并创建了一个新列表,但是当我这样做时,json 的键是 id,我希望它是一个固定名称。
我以这种方式创建列表。 我不知道这是否是最有效的方法,但这是我得到的唯一方法。
public Map<Object, NotasMateriaDTO> buscaNotavfffsTipoList(Integer idusuario) {
List<NotasMateria> notasMaterias = repository.findAll(Sort.by("dataNota").descending());
List<Materia> materias = materiaRepository.findAll();
ModelMapper mapper = new ModelMapper();
List<NotasMateriaDTO> filter1 =
notasMaterias.stream()
.filter(t -> t.getIdUsuario()== idusuario)
.map(mt -> mapper.map(mt, NotasMateriaDTO.class))
.collect(Collectors.toList());
List<NotasMateriaDTO> filter2 = materias.stream()
.filter(t ->t.getIdUsuario() ==(idusuario))
.map(mt -> mapper.map(mt, NotasMateriaDTO.class))
.collect(Collectors.toList());
Map<Object, NotasMateriaDTO> serverMap1 = filter1.stream().collect(Collectors.toMap(NotasMateriaDTO::getIdMateria, Function.identity()));
Map<Object, NotasMateriaDTO> serverMap2 = filter2.stream().collect(Collectors.toMap(NotasMateriaDTO::getIdMateria, Function.identity()));
serverMap1.keySet().forEach(key -> serverMap1.merge(key,
serverMap2.get(key),
(server1, server2) -> {
server1.setNomeMateria(server2.getNomeMateria());
return server1;
}));
return serverMap1;
}
这样它会返回该列表:
{
"18": {
"idNotaMateria": 1,
"idMateria": 18,
"idUsuario": 7,
"notaMateria": 4.0,
"nomeMateria": "dfsdf"
},
"10": {
"idNotaMateria": 3,
"idMateria": 10,
"idUsuario": 7,
"notaMateria": 10.0,
"nomeMateria": "materia123"
},
"14": {
"idNotaMateria": 6,
"idMateria": 14,
"idUsuario": 7,
"notaMateria": 432.0,
"nomeMateria": "mat123"
}
}
希望她看起来像这样:
{
"anyName": {
"idNotaMateria": 1,
"idMateria": 18,
"idUsuario": 7,
"notaMateria": 4.0,
"nomeMateria": "dfsdf"
},
"anyName": {
"idNotaMateria": 3,
"idMateria": 10,
"idUsuario": 7,
"notaMateria": 10.0,
"nomeMateria": "materia123"
},
"anyName": {
"idNotaMateria": 6,
"idMateria": 14,
"idUsuario": 7,
"notaMateria": 432.0,
"nomeMateria": "mat123"
}
}
【问题讨论】:
-
简单问题,你将如何处理所有具有相同键的对象?
-
更容易在前端操作
-
发布 NotasMateriaDTO,我会帮助你
-
'@Getter @Setter public class NotasMateriaDTO { private int idNotaMateria;私人 int idMateria;私人 int idUsuario;私人双重记事本;私有字符串命名材料; } '
标签: java json lambda java-stream