我创建了一个HashMap
,为此我添加了username
和displayname
,现在我将每个用户ID传递给另一个类,该类返回带有计数值的映射。现在,在此我需要返回两个地图对象。
public class ReporteeList {
public Map<Object, Object> getReportees(String idOfEmp) {
HashMap<Object, Object> map = new HashMap<Object, Object>();
if (jsonarr_s.size() > 0) {
// Get data for List array
for (int i = 0; i < jsonarr_s.size(); i++) {
JSONObject jsonobj_1 = (JSONObject) jsonarr_s.get(i);
JSONObject jive = (JSONObject) jsonobj_1.get("jive");
Object names = jsonobj_1.get("displayName");
Object userid = jive.get("username");
String UserId = userid.toString();
map.put(names, userid);
//return the map with the key value pairs
map = count.getJiraCount(UserId);
}
return map;
}
}
}
如果根本不需要使用List
,那么如何在这里实现。
谢谢。
答案 0 :(得分:0)
所以我了解到您想返回一个列表中的多个地图(如果我对问题的理解不正确,请纠正我):
要创建列表:List<Map<Object, Object> myList = new ArrayList<>();
然后使用myList.add(map)
将地图添加到此列表。
答案 1 :(得分:0)
您必须检索用户名/显示名称对 + 计数图对对的列表作为附加数据。然后,您可以检索Map
的列表:
public List<Map<String, String>> getReportees(String idOfEmp) {
if (jsonarr_s.size() <= 0)
return Collections.emptyList();
List<Map<String, String>> res = new ArrayList<>();
for (int i = 0; i < jsonarr_s.size(); i++) {
Map<String, String> map = new HashMap<>();
String names = String.valueOf(((JSONObject)jsonarr_s.get(i)).get("displayName"));
String userid = String.valueOf(((JSONObject)jsonobj_1.get("jive")).get("username"));
map.put(names, userid);
map.putAll(count.getJiraCount(userid));
res.add(map);
}
return res;
}
更好的解决方案是定义数据类并将所有信息保存在其中,而不是Map
。
public static final class User {
private final String userName;
private final String displayName;
private final Map<?, ?> jiraCount; // do not know what data is returned with `count.getJiraCount()`
public User(String userName, String displayName, Map<?, ?> jiraCount) {
this.userName = userName;
this.displayName = displayName;
this.jiraCount = jiraCount;
}
}
public List<User> getReportees(String idOfEmp) {
if (jsonarr_s.size() <= 0)
return Collections.emptyList();
List<User> res = new ArrayList<>();
for (int i = 0; i < jsonarr_s.size(); i++) {
String userName = (((JSONObject)jsonobj_1.get("jive")).getString("username"));
String displayName = ((JSONObject)jsonarr_s.get(i)).getString("displayName");
Map<?, ?> jiraCount = count.getJiraCount(userid);
res.add(new User(userName, displayName, jiraCount));
}
return res;
}