src
在这种情况下,我无法在Map>中添加日期字符串?
答案 0 :(得分:4)
您正在尝试放置地图需要List的字符串。
而不是:
patientMap.put("PATIENTLIST", patientList);
patientMap.put("LASTKEY", date);
地点:
patientMap.put(date, patientList);
使用日期字符串为关键且患者列表为值的地图,您可以快速获得给定日期的患者列表。
如果您想使用地图以字符串形式保存对象的日期和列表,则必须将这些字符串转换回原始日期或患者对象列表。
如果这真的是你想要的,我建议你研究 java对象序列化和反序列化。
答案 1 :(得分:2)
以下是您可以做的小改动(绝对必须更改返回类型):
public Map<String, PatientMapObject> getPatients(String sendingApplication,String sendingFacility) {
// TODO Auto-generated method stub
Map<String, PatientMapObject> patientMap = null;
List<PatientInfo> patientList = null;
patientMap = new HashMap<String, PatientMapObject>();
patientList = new ArrayList<PatientInfo>();
try {
PatientInfoDAO patientInfoDAO = new PatientInfoDAOImpl();
ItemCollection<QueryOutcome> items = patientInfoDAO.getPatients(sendingApplication, sendingFacility);
for(Item item : items){
PatientInfo patient = new PatientInfo();
patient.setAdministrativeSex("Male");
patientList.add(patient);
}
String date = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
PatientMapObject pmo = new PatientMapObject();
pmo.setPatientList(patientList);
pmo.setPDate(date);
patientMap.put("PATIENTLIST", pmo);
return patientMap;
}catch(Exception ase){
throw new RuntimeException("internalServerError");
}
}
class PatientMapObject{
private List<PatientInfo> patientList;
private String pdate;
public void setPDate(String pdate) {
this.pdate = pdate;
}
public void setPatientList(List<PatientInfo> patientList) {
this.patientList = patientList;
}
//getters
}
答案 2 :(得分:0)
您只能在Map
的定义中添加定义的对象类型(即List<PatientInfo>
,因为您正在创建类似Map<String, List<PatientInfo>>
的地图)以添加字符串,您也应该使用{{1 }}
答案 3 :(得分:0)
正如我的评论所述,您可以使用Map<String, Object>
类型的地图来同时保存患者列表和日期。该解决方案的问题在于
Map<String, Object> patientData = new HashMap<>();
patientData.put("LASTKEY", date);
String lastKey = (String) patientData.get("LASTKEY");
为了避免这一切,我认为这是最惯用的Java解决方案:创建一个PatientData
类来保存您的PatientInfo
项目列表,以及您想要的其他日期商店:
public class PatientData {
private List<PatientInfo> patientList = new ArrayList<>();
private Date lastKey; // or better still, use one of the Java 8 date classes
// getters and setters...
}
这可以保证类型安全并消除密钥名称中拼写错误的风险以及需要进行投射:
PatientData patientData = new PatientData();
patientData.setLastKey(new Date());
Date date = patientData.getLastKey();