java - Iterate a list of objects and compare properties -
i trying iterate list containing helper class objects , compare properties of helper. based on comparison if validation fails,i wanted show error message user. below code snippet.
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(); (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 required"); } if (helperend == null || "".equals(helperend)) { errormap.put("helperend_" + helperpkey, "helper end required"); } if (employeepkey == null || "".equals(employeepkey)) { errormap.put("employee_" + helperpkey, "helper name 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 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; } how can compare enddate of 1st object startdate of 2nd object , on(if employee name same.in above helper list 1st & 3rd object has same name 'manu'). can me on this. in advance !!
i don't want compare object or remove duplicate object list.
i think need keep hash of last seen enddate each name. e.g. declare before loop:
map<string,date> lastdateforname = new hashmap<string,date>(); then after you've tested else current record, this:
if (lastdateforname.get(employeepkey) != null && !helperstartdate.after(lastdateforname.get(employeepkey))) { errormap.put(...); } lastdateforname.put(employeepkey, helperenddate)
Comments
Post a Comment