public ArrayList getDataBySection(String filterHitConcept) { ArrayList results = new ArrayList(); HashMap conceptMap = new HashMap(); Iterator iter = this.data.listIterator(); int currentPosition = 0; while (iter.hasNext()) { StudentsConceptHit cHit = (StudentsConceptHit) iter.next(); if (filterHitConcept.equals("Progress") ? true : filterHitConcept.equals(cHit.getSection())) { Integer position = (Integer) conceptMap.get(cHit.getHitConcept()); if (position == null) { results.add(cHit); conceptMap.put(cHit.getHitConcept(), new Integer(currentPosition)); currentPosition++; } else { StudentsConceptHit previousStudentsConceptHit = (StudentsConceptHit) results.get(position.intValue()); previousStudentsConceptHit.setHitDegree( previousStudentsConceptHit.getHitDegree() + cHit.getHitDegree()); } } } return results; }