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);

}

}

}

}

温馨提示:内容为网友见解,仅供参考
无其他回答

List<map<string,string>>类型的集合,分离出重复的map值和不重复的?
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(...

mybatis如何遍历List<Map<String,String>>,重点是map里面的key名字和数 ...
第一个foreach标签里面你的item是mapS,你后面用的maps当然要报错了,这个是要大小写严格区分的

java的List集合里面放了Map,List<Map<String,Object>>,如何判定人名相同...
public class Test2 {public static void main(String[] args) {Map<String, String> map1 = new MyMap<>();map1.put("name", "张三");map1.put("公司", "腾讯");Map<String, String> map2 = new MyMap<>();map2.put("name", "李四");map2.put("公司", "阿里");Map<Strin...

Android 移除ArrayList<HashMap<String, String>>中的重复
\/\/构造你的集合初始化数据ArrayList<HashMap<String, String>> olist= new ArrayList<HashMap<String, String>>();HashMap<String, String> map = new HashMap<String, String>();map.put("123","123");for(int i=0;i<10;i++){olist.add(map);}System.out.println(olist.size()); ...

java中怎样去除list中重复的数据,并且显示重复数据的条数
其实你这个问题,总来说就是按照集合中的字符串进行分类,并统计数量,Stream只用简单的代码就完成复杂的操作,代码如下 List<String> list = Arrays.asList("day", "walipo", "day", "walipo", "legeand", "day", "douwbo", "day", "day");Map<String, Long> collect = list.stream()...

List<Map<String, String>> java怎么遍历
java中遍历list可以使用keyset来遍历,示例如下:Map<String,Object> map = new HashMap<String, String>(); map.put("1", "fds"); map.put("2", "valu"); List<Map<String, String>> list = new ArrayList<Map<String, String>>(); list.add(map); for (Map<String...

android 如果map<string,map<string,list<string>>> 怎么取出list值
参考如下代码:for(int i=0;i<mapList.size();i++){ Map<String,Object> map= mapList.get(i);Set<String> set = map.keySet();Iterator<String> its = set.iterator();while (its.hasNext()) { \/\/ key String key = its.next();\/\/ value Object value = map.get(key);} } ...

java List<map>赋值的问题
map = new HashMap<String, String>(); \/\/map要重新new不然还是上一个map map.put("key", "B"); map.put("key", "B"); finishMapList.add(map); model.addAttribute("finishMapList", finishMapList); return "rm\/riskmanager\/isfinishtreatment"; }map要重新new不然...

List<Map<String,String>>如何修改里面的元素
你不能放进去了。因为类型是不通用的。你的Fsdz的属性 不一定是String,而formatter的返回结果是String。如果你的Fsdz的属性都是String,那么重新对属性进行赋值操作就可以,不需要考虑“放进去”,因为你根本也没取出来,只是逐个访问 逐个修改。

List、Set、Map三种集合的区别
Set(集合)List(列表)Map(键值对)具体分析 Set集合:Set接口是Collection接口的一个子接口,是无序的,set中不包含重复的元素,也就是说set中不存在两个相同的元素,在添加数据时会根据当前这个元素的hash值去比较集合中已有的元素,如果已存在相同的集合,添加方法会返回一个false,表示添加失败。主...

相似回答