【发布时间】:2015-05-29 18:34:13
【问题描述】:
我正在尝试迭代包含 Helper 类对象的列表并比较 Helper 的属性。如果任何验证失败,基于比较,我想向用户显示一些错误消息。下面是我的代码 sn-p。
public static void main(String[] args) {
Map<String, String> errorMap = new HashMap<String, String>();
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
List<HelperDTO> helpers = new HelperTest().getHelpers();
for (HelperDTO helperDTO : helpers) {
String helperPkey = helperDTO.getHelperPkey();
String employeePkey = helperDTO.getEmployeePkey();
String helperStart = helperDTO.getHelperStart();
String helperEnd = helperDTO.getHelperEnd();
if (helperStart == null || "".equals(helperStart)) {
errorMap.put("helperSt_" + helperPkey,
"Helper Start is required");
}
if (helperEnd == null || "".equals(helperEnd)) {
errorMap.put("helperEnd_" + helperPkey,
"Helper End is required");
}
if (employeePkey == null || "".equals(employeePkey)) {
errorMap.put("employee_" + helperPkey,
"Helper name is required");
}
try {
if (helperStart != null && !"".equals(helperStart)
&& helperEnd != null && !"".equals(helperEnd)) {
Date helperStartDate = format.parse(helperStart);
Date helperEndDate = format.parse(helperEnd);
if (!helperEndDate.after(helperStartDate)) {
errorMap.put("helperEnd_" + helperPkey,
"Helper End should be after Helper Start.");
}
}
} catch (ParseException e) {
e.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
private List<HelperDTO> getHelpers() {
List<HelperDTO> hdtoLst = new ArrayList<HelperDTO>();
hdtoLst.add(new HelperDTO("100", "MANU", "07/06/2013", "08/06/2013"));
hdtoLst.add(new HelperDTO("101", "DEEPAK", "07/06/2013", "08/06/2013"));
hdtoLst.add(new HelperDTO("102", "MANU", "07/06/2013", "10/06/2013"));
return hdtoLst;
}
如何比较第一个对象的结束日期和第二个对象的开始日期等等(如果员工姓名相同。在上面的帮助列表中,第一个和第三个对象与 'MANU' 具有相同的名称>)。谁可以帮我这个事。提前致谢!!
我不想比较对象或从列表中删除重复的对象。
【问题讨论】:
-
对比什么?
-
@EduardoDennis :想比较第一个对象的 endDate 和第二个对象的 startDate 等等。 (如果员工姓名是唯一的或相同的)
-
@ManuPrakash 所以将列表中的对象与同一列表中的所有其他对象进行比较?
-
您需要一个嵌套的 for 循环,该循环遍历所有正在进行的助手,检查它们的名称是否匹配,然后进行日期比较