【发布时间】:2020-10-26 21:46:39
【问题描述】:
我有一些示例对象将包含在一个 ArrayList 中,这些项目必须以特定格式出现,每个 item 必须是一个数组在 json 中的新位置返回。
按照我目前开发的代码:
import java.util.List;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
public class MyClass {
String text = "hi";
String language = "pt-br";
String item = "1";
public static void main(String args[]) {
MyClass myObj1 = new MyClass();
myObj1.text = "ola";
myObj1.language = "pt-br";
myObj1.item = "1";
MyClass myObj2 = new MyClass();
myObj2.text = "hi";
myObj2.language = "en";
myObj2.item = "1";
MyClass myObj3 = new MyClass();
myObj3.text = "holaa";
myObj3.language = "es";
myObj3.item = "2";
MyClass myObj4 = new MyClass();
myObj4.text = "olaaaaa";
myObj4.language = "pt-br";
myObj4.item = "2";
MyClass myObj5 = new MyClass();
myObj5.text = "helllooo";
myObj5.language = "eng";
myObj5.item = "3";
List<MyClass> lang = new ArrayList<MyClass>();
lang.add(myObj1);
lang.add(myObj2);
lang.add(myObj3);
lang.add(myObj3);
lang.add(myObj4);
ArrayList<HashMap<String, String>> lista = new ArrayList<>();
HashMap<String, String> mapa = new HashMap<>();
for(int i = 0; i < lang.size();i++) {
if(i > 0 && lang.get(i).item != lang.get(i-1).item) {
lista.add(mapa);
mapa.clear();
}
if(i == lang.size()-1){
lista.add(mapa);
mapa.clear();
}
mapa.put(lang.get(i).language, lang.get(i).text);
}
System.out.println(lista.toString());
}
}
应该以这种模式返回:
[{
"item_id": 1,
"language": [{
"pt-br": "ola",
"en": "hii"
}]
}, {
"item_id": 2,
"language": [{
"es": "holaa",
"pt-br": "olaaaaa"
}]
}, {
"item_id": 3,
"language": [{
"eng": "helllooo"
}]
}]
Spring 的整个部分已经实现,我需要对结果进行操作,以便它在我的端点中正确显示。
【问题讨论】:
-
现在有什么问题?
-
我无法在数组列表的同一位置返回每个 item_id
-
如果每个项目的
language属性总是包含一个对象,它是否必须是一个数组? -
是的,一个数组..
-
输入数组中的项目是否总是保证从1、2、3、...到n?其中 n 是项目总数。或者是否有间隙,例如输入数组只有第 1、3 和 5 项。
标签: java spring arraylist hashmap