자바 구조 list, 중복 배열 통합

3674 단어 자바
개발 프로젝트 에서 이러한 문제 에 부 딪 혔 습 니 다. 하나의 repeat List 에 이러한 데이터 가 있 습 니 다.
repeatList=[
    {sort='0', company='A  ', value='28432'}
    {sort='0', company='A  ', value='8263685'}
    {sort='0', company='A  ', value='1234'}
    
    {sort='0', company='B  ', value='2234'}
    {sort='0', company='B  ', value='567'}
    
    {sort='0', company='C  ', value='85789'}
    ...
]

내 가 어떻게 해야만 그들 을 합병 할 수 있 습 니까?
list=[
    {sort='0', company='A  ', value1='28432' , value2='8263685',value3='1234'}
    {sort='0', company='B  ', value1='2234' , value2='567'}
    {sort='0', company='C  ', value1='85789'}
]

여 기 는 b 필드 의 회사 명 에 따라 같은 회사 의 서로 다른 데이터 구 조 를 함께 구성 하 는데 방법 은 다음 과 같다.
총화: 이중 옮 겨 다 니 기 + 다시 옮 겨 다 니 기
(1) 이중 스 트 리밍 구조 데이터:
//       list,list           ,             ,         
List> oList = new ArrayList<>();

Map> map = new HashedMap();
//   for  
for(? input : repeatList){
    List> list = map.get(input.getString("company"));
    if (list == null) {
        list = new ArrayList<>();
        list.add(input);
        map.put(input.getString("company"), list);
    }
    for (? input2 : repeatList){
        if(input.getString("company").equals(input2.getString("company")) && !list.contains(input2)){
            list.add(input2);
        }
    }
    /*           ,new               ,
         ,  for     oLsit  add,                ,          ,
      company sort       ,  value     */
    
    ? mergePd = new ?();
    
    //   for  
    for(? x : list){
        mergePd.put("company", String.valueOf(x.get("company")));
        mergePd.put("sort", String.valueOf(x.get("sort")));
        //      ,  value    ,       
        String sign = 1;
        mergePd.put("value" + sign, String.valueOf(x.get(value)));
        sign ++;
    }
    oList.add(mergePd);
}

위의 구 조 를 거 쳐 이런 결과 가 나 올 수 있다.
oList=[
    {sort='0', company='A  ', value1='28432' , value2='8263685',value3='1234'}
    {sort='0', company='A  ', value1='28432' , value2='8263685',value3='1234'}
    {sort='0', company='A  ', value1='28432' , value2='8263685',value3='1234'}
    
    {sort='0', company='B  ', value1='2234' , value2='567'}
    {sort='0', company='B  ', value1='2234' , value2='567'}
    
    {sort='0', company='C  ', value1='85789'}
]

(2) 무 거 운 것 을 제거 하 는 것 은 모든 데 이 터 를 옮 겨 다 니 기 때문에 일정한 수량의 중복 이 발생 할 수 있 습 니 다. 이 럴 때 무 거 운 것 을 제거 하 는 절 차 를 밟 아야 합 니 다. 자바 의 set 방법 을 사용 하면 됩 니 다. 즉, 위의 방법 뒤에 보충 하 는 것 입 니 다.
//set  outList       ,          
Set set = new HashSet(oList);
oList = new ArrayList(set);

List> outList;
outList.addAll(oList);

(3) 이때 의 결 과 는:
outList=[
    {sort='0', company='A  ', value1='28432' , value2='8263685',value3='1234'}
    {sort='0', company='B  ', value1='2234' , value2='567'}
    {sort='0', company='C  ', value1='85789'}
]

이것 은 우리 가 원 하 는 결과 에 이 르 렀 다.
제 공유 가 여러분 에 게 도움 이 되 었 으 면 좋 겠 습 니 다. 도움 이 된다 면 좋아요!!!

좋은 웹페이지 즐겨찾기