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

比如,[{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}]这... 比如,[{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 展开
 我来答
匿名用户
2019-11-22
展开全部

思路很简单:利用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);

}

}

}

}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式