A method for an attribute List <Map> in the map of unique values for processing

package top.dszy.test.java8;


import java.util.*;
import java.util.stream.Collectors;

public class Test1 {

    public static void main(String[] args) {

        List<LinkedHashMap<String,Object>> list = new ArrayList<>();
        list.add(new LinkedHashMap<String, Object>(){{
            put("id","a");
            put("age","13");
            put("sex","男");
        }});
        list.add(new LinkedHashMap<String, Object>(){{
            put("id","a");
            put("age","14");
            put("sex","男");
        }});
        list.add(new LinkedHashMap<String, Object>(){{
            put("id","b");
            put("age","14");
            put("sex","男");
        }});
        list.add(new LinkedHashMap<String, Object>(){{
            put("id","c");
            put("age","14");
            put("sex","男");
        }});
        list.add(new LinkedHashMap<String, Object>(){{
            put("id","");
            put("age","14");
            put("sex","男");
        }});
        list.add(new LinkedHashMap<String, Object>(){{
            put("id","c");
            put("age","14");
            put("sex","男");
        }});


        handleRepeatPrimaryKey(list,"id");
        List<LinkedHashMap<String,Object>> hasList = new ArrayList<>();
        hasList =  list.stream().filter(x -> !x.get("id").toString().equals("")).collect(Collectors.toList());
        List<LinkedHashMap<String,Object>> notHasList = new ArrayList<>();
        notHasList =  list.stream().filter(x -> x.get("id").toString().equals("")).collect(Collectors.toList());

        System.out.println(hasList);
        System.out.println(notHasList);



    }


    public static List<LinkedHashMap<String,Object>> handleRepeatPrimaryKey(List<LinkedHashMap<String,Object>> list,String id){
        List<LinkedHashMap<String,Object>> itemList = new ArrayList<>();
        for(LinkedHashMap<String,Object> lhm : list){
            if(itemList.size() == 0){
                itemList.add(lhm);
            }else {
                ListIterator<LinkedHashMap<String,Object>> listIterator = itemList.listIterator();
                while(listIterator.hasNext()){
                    if(listIterator.next().get(id).toString().equals(lhm.get(id).toString())){
                        lhm.put(id,"");
                    }else {
                        listIterator.add(lhm);
                    }
                }
            }
        }
        return list;
    }
}

Primary keys of the repeated processing, take the first remaining primary keys are blank, ah, I can meet the needs. I do not know there is no better way?

Guess you like

Origin www.cnblogs.com/rongyao/p/11261601.html
Recommended