我有Spring MVC应用程序。
我从客户端发送了以下JSON字符串
{
"cfgName": "Name",
"cfgfieldses": [
{
"cfgsName": "form.0",
"cfgValue": "someVal"
},
{
"cfgsName": "form.2",
"cfgValue": "hello"
},
{
"cfgsName": "form.3",
"cfgValue": "fname"
},
{
"cfgsName": "form.1",
"cfgValue": "how?"
}
]
}
我有两个类来解析这个
Config.java
public class Config implements Serializable {
private String cfgName;
private Set<CfgFields> cfgFieldses = new HashSet<CfgFields>(0);
//getters and setters
}
CfgFields.java
public class CfgFields implements Serializable {
private String cfgsName;
private String cfgValue;
//getters and setters
}
这是我的控制器
public void saveConfig(@RequestBody Config config) {
System.out.println(config.getCfgName());
for (Cfgfields cfgfields: config.getCfgFieldses()) {
System.out.println(cfgfields.getCfgsName());
}
}
cfgfieldses
不符合我Set
的顺序。这就是我得到的结果。
Name
form.1
form.2
form.0
form.3
当我从客户端发送JSON字符串时,我想以有序的方式进入。我可以尝试列表而不是设置。但我想知道是否有可能使用Set
并以有序方式进入。
我的预期输出是
Name
form.0
form.2
form.3
form.1
答案 0 :(得分:0)
而不是HashSet
,请使用LinkedHashSet
。
与HashSet
不同,它不保证其项目的顺序,LinkedHashSet
允许您按照插入顺序迭代其成员。
修改强>
如果您要对Set
中的项目强制执行特定的排序顺序(例如,通过表单名称),请使用SortedSet
,例如TreeSet
。您需要为Comparator
课程提供自定义Cfgfields
。