1. 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<String, String> map3 = new MyMap<>();
map3.put("name", "王五");
map3.put("公司", "网络");
Map<String, String> map4 = new MyMap<>();
map4.put("name", "哈哈哈");
map4.put("公司", "嘿嘿嘿");
Map<String, String> map5 = new MyMap<>();
map5.put("name", "张三");
map5.put("地址", "四川");
Map<String, String> map6 = new MyMap<>();
map6.put("name", "李四");
map6.put("地址", "湖南");
Map<String, String> map7 = new MyMap<>();
map7.put("name", "王五");
map7.put("地址", "广东");
List<Map<String, String>> list = new ArrayList<>();
list.add(map1);
list.add(map2);
list.add(map3);
list.add(map4);
list.add(map5);
list.add(map6);
list.add(map7);
//lambda遍历输出
list.forEach(map -> System.out.println(map.toString()));
System.out.println("==========================");
Map<String, String> m1;
Map<String, String> m2;
/* 遍历方式:
* 将集合中当前元素m1与它后一个元素m2比较,若name相同,则将m2中的内容put到m1中,同时删除m2
* 指针j向右偏移一位,重复上一步,直至所有元素都作为m1过一次
* */
for (int i = 0; i < list.size() - 1; i++) {
for (int j = i; j < list.size() - 1; j++) {
m1 = list.get(i);
m2 = list.get(j + 1);
//若m1与m2的name相同
if (m1.equals(m2)) {
//则将m2中的内容put到m1中
m2.forEach(m1::put);//lambda遍历
//删除m2
list.remove(j + 1);
}
}
}
System.out.println("==========================");
//lambda遍历输出
list.forEach(map -> System.out.println(map.toString()));
}
@SuppressWarnings("unchecked")
static class MyMap<K, V> extends LinkedHashMap<K, V> {
/**
* 重写equals方法,this为m1,o为m2
* 这里其实需要instanceof来检查泛型的,但是我不会使用instanceof来检查泛型,
* 不能直接使用if ( o instanceof LinkedHashMap<String, String>),这样是
* 编译失败的,所以我没办法只能用try弄一下
*
* @param o m2
* @return 若m1与m2的name相同,返回true
*/
@Override
public final boolean equals(Object o) {
if (o == this)
return true;
try {
LinkedHashMap<String, String> map = (LinkedHashMap<String, String>) o;
if (this.get("name").equals(map.get("name"))) {
return true;
}
} catch (ClassCastException e) {
e.printStackTrace();
}
return false;
}
}
}
我怕代码挤在一起,截图给你:
2. JAVA中的List里的Map 如何去除重复的Key
“可以利用Map的key不重复特性: 遍历List,遍历过程中将List中取出的值作为key保存到一个临时的Map中,Map的value可以自己随意设定。 注意,在保存到Map之前,使用map.get("key")从Map中获取对应是数据,判断是否为null即可判断该List中的值是否...”
3. java List<map>赋值的问题
List<Map<String,String>>finishMapList=newArrayList<Map<String,String>>();
Map<String,String>map=newHashMap<String,String>();
map.put("key","A");
map.put("key","A");
finishMapList.add(map);
map=newHashMap<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不然还是上一个map.
map.put("key", "B");其实是在修改map中的内容不是新的
不知道这样说你明不明白
不明白就继续问吧
4. 关于java的集合,在list集合中添加map集合
Java中的复集合包括三大类,它们是制Set、List和Map,它们都处于java.util包中,Set、List和Map都是接口,它们有各自的实现类。Set的实现类主要有HashSet和TreeSet,List的实现类主要有ArrayList,Map的实现类主要有HashMap和TreeMap。Set中的对象不按特定方式排序,并且没有重复对象。但它的有些实现类能对集合中的对象按特定方式排序,例如TreeSet类,它可以按照默认排序,也可以通过实现java.util.Comparator接口来自定义排序方式。List中的对象按照索引位置排序,可以有重复对象,允许按照对象在集合中的索引位置检索对象,如通过list.get(i)方式来获得List集合中的元素。Map中的每一个元素包含一个键对象和值对象,它们成对出现。键对象不能重复,值对象可以重复。
5. 在List中存放了一个map,怎么在java后台获取这个List中map中的值
LIST 是以数组形式存储的 map是以key-value形祥闹局式
Map map =(Map)list.get(i);
取到了map 在从谨让map里面get(key)就行了弯启
key是你当初存放在map里面的关键字
6. java的List<Map>用法
//存放所有学生信息
List<Map<String,Object>> listStudentInfo=new ArrayList<Map<String,Object>>();
//定义学生1的一些属性
Map<String,Object> stu1=new HashMap<String, Object>();
stu1.put("sId", 111);//学号
stu1.put("sName", "张三");//姓名
stu1.put("sSex", "男");//性别
listStudentInfo.add(stu1);
//定义学生2的一些属性
Map<String,Object> stu2=new HashMap<String, Object>();
stu2.put("sId", 112);//学号
stu2.put("sName", "李四");//姓名
stu2.put("sSex", "女");//性别
listStudentInfo.add(stu2);
//得到所有学生信息
for( Map<String,Object> stu:listStudentInfo)
{
System.out.println("学号:"+stu.get("sId")+" 姓名:"+stu.get("sName")+" 性别:"+stu.get("sSex"));
}
7. java中,下面的List怎么放入map里面,求高手!
你首先要了解什么是Map,可以理解为Map是一堆key和value的映射集合(或者说一堆键值对的集合)。
List list = new ArrayList();
Map map = new HashMap();
list.add("a");
list.add("c");
list.add("b");
for(int i =0;i<list.size();i++){
map.put(i, list.get(i));
}
然后你要用Map里的东册物西,可以使用map.get(1)这种形式获取,他和list.get(1);
相等都为“c”。
另外建议初始化Map和List的时候,定义好薯含所存的数据数姿笑类型。
List<String>
list
=
new
ArrayList<String>();
Map<Integer,
String>
map
=
new
HashMap<Integer,
String>();