List<map<string,string>>类型的集合,分离出重复的map值和不重复的?

比如,[{A=2, ID_CARD=q}, {B=2, ID_CARD=q}, {B=2, ID_CARD=s}, {c=2, ID_CARD=3}, {c=1, ID_CARD=q}]这个集合,要求id_card相同的所以map单独拿出放在list,一个都不同的放到另一个list

思路很简单:利用set集合不重复特性,找出重复的value,然后做个标记,进行分类即可!

import java.util.ArrayList;

import java.util.HashMap;

import java.util.HashSet;

import java.util.List;

import java.util.Map;

import java.util.Set;

public class Day22A {

final static List<Map<String, String>> list = new ArrayList<Map<String, String>>() {

private static final long serialVersionUID = 32L;{

add(new HashMap<String, String>() {

private static final long serialVersionUID = 1L;{

put("A=2", "ID_CARD=q");

}

});

add(new HashMap<String, String>() {

private static final long serialVersionUID = 1L;{

put("B=2", "ID_CARD=q");

}

});

add(new HashMap<String, String>() {

private static final long serialVersionUID = 1L;{

put("B=2", "ID_CARD=s");

}

});

add(new HashMap<String, String>() {

private static final long serialVersionUID = 1L;{

put("C=2", "ID_CARD=3");

}

});

add(new HashMap<String, String>() {

private static final long serialVersionUID = 1L;{

put("C=1", "ID_CARD=q");

}

});

}

};

static List<Map<String, String>> listA = new ArrayList<>();

static List<Map<String, String>> listB = new ArrayList<>();

static Set<String> set = new HashSet<>();

static String str;

static boolean flag=true;


public static void main(String[] args) {

System.out.println("-------原始集合--------");

lookUp(list);

selectFun(true);

System.out.println("\r\n--------[分离A]--------");

lookUp(listA);

System.out.println("\r\n--------[分离B]--------");

lookUp(listB);

}

public static void selectFun(boolean b) {

for (Map<String, String> map : list) {

for(Map.Entry<String, String> me:map.entrySet()){

String key=me.getKey();

String value=me.getValue();

if(b) {

if(!(flag=set.add(value))){

str=value;

selectFun(false);

return;

}

}else{

if(value.equals(str)) {

listA.add(new HashMap<String,String>(){

private static final long serialVersionUID = 1L;{

put(key,value);}

});

}else {

listB.add(new HashMap<String,String>(){

private static final long serialVersionUID = 1L;{

put(key,value);}

});

}

}

}

}

}

public static void lookUp(List<Map<String,String>> list) {

for (Map<String,String> map : list) {

for(Map.Entry<String, String> me:map.entrySet()){

String key=me.getKey();

String value=me.getValue();

System.out.println(key+","+value);

}

}

}

}

温馨提示:答案为网友推荐,仅供参考
相似回答