현재 객체의 arraylist에 참석하는 것을 포함하는 구현을 위해 노력하고 있습니다 (예 : 1000). 속성에 공통점을 찾아 그룹화합니다. 등록, 위치 년, 양거대한 컬렉션에서 유사한 객체를 트래버스하고 그룹화하는 효율적인 방법
그룹화 기준 - -
ArrayList itemList<CustomJaxbObj> = {Obj1,obj2,....objn} //n can reach to 1000
개체 속성 예를 들어
등록 번호 및 위치 같은 해에 개체에 대한 ... 양을 추가
하는 경우 10 개의 객체가 있는데, 8 개의 객체가 동일한 loc와 year의 등록을 가지고 있고, 8 개 모두와 reg와 loc가 일치하는 다른 2 개의 금액을 더합니다. 따라서 작업이 끝나면 2 개의 객체가 남았습니다. 1은 일치 된 8 개의 객체의 합계이고 1은 객체의 2 개의 일치 기준입니다.
현재 이중 전통 루프를 사용하고 있습니다. 고급 루프가 더 좋지만 그룹화를 수행해야하는 인덱스에 대한 제어가 많지 않습니다. 그것은 그룹화 된 엔트리의 새로운 엔트리를 형성하기 위해 결합 된 개별 엔트리를 추적 할 수있게 해줍니다.
for (i = 0; i < objlist.size(); i++) {
for(j = i+1; j< objList.size();j++){
//PErform the check with if/else condition and traverse the whole list
}
}
이 작업은 매우 비효율적이며 무거운 작업입니다. 이 작업을 수행하는 더 좋은 방법이 있습니까? Java8 스트림을 사용하도록 다른 답변을 보았지만 작업이 복잡하므로 그룹화를 수행해야합니다. 나는 성냥이있을 때 무언가를하는보기를 주었다 그러나 다만 추가에 그것보다는 더 많은 것이있다.
더 나은 방법이 있습니까? 검색 및 그룹화를 더 쉽게하는 이런 종류의 데이터를 보유하는 더 나은 데이터 구조?
더 많은 관점을 추가하면 이전에이 정보를 제공하지 않았던 것에 사과드립니다.
arraylist는 수신 페이로드 xml의 jaxb 개체 모음입니다.
XML 계층 구조
<Item>
<Item1>
<Item-Loc/>
<ItemID>
<Item-YearofReg/>
<Item-Details>
<ItemID/>
<Item-RefurbishMentDate>
<ItemRefurbLoc/>
</Item-Details>
</Item1>
<Item2></Item2>
<Item3></Item3>
....
</Item>
그래서 항목의 JAXB 객체는 900-1000 항목의 목록이 있습니다. 각 품목에는 개장 날짜가있는 ItemDetails의 하위 섹션이있을 수 있습니다. 내가 직면 한 문제는 Item Details 섹션이 없을 때 이중 루프가 잘 작동하며 모든 항목을 탐색하고 확인할 수 있다는 것입니다. 요구 사항에 따르면 제품을 리퍼브 한 경우 해당 연도를 간과하고 대신 기준을 충족시키는 재 설계 연도를 고려합니다.
또 다른 요점은 Item1의 항목 세부 정보가 Item2 Item Details 섹션에 나타날 수있는 섹션의 동일한 Item에 속할 필요가 없다는 것입니다. Item id는 올바른 항목을 항목 세부 정보에 매핑하는 데 사용하는 필드입니다 .
전체 목록을 읽지 않으면 변경을 시작할 수 없습니다. 루프의 정상적인 무언가가 그것을 할 것이지만 이중 루프 때문에 이미 증가한 순환 복잡성을 증가시킬 것입니다.
따라서 그룹화를 수행하기 전에 먼저 개체 목록을 저장하고 분석하기위한 데이터 구조가 필요합니다.
죄송합니다. stackoverflow 내 첫 질문, 따라서 경험이 없습니다.
현재 개체를 저장하는 데 사용하는 누적 계산기의 예를 표시 할 수 있습니까? –
질문에 대한 더 많은 통찰력이 추가되었습니다. 현재 ArrayList에 모든 내용을 저장하고 기준이 일치 할 때 작업을 수행합니다. –