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