java基础之对map集合进行增加改查与遍历

java基础中集合是一个要点,所以我们现在温习一下这个知识点

map集合,主要是键值对的形式出现,什么意思?去吃麻辣烫的时候,你挑好的东西给了店员以后,店员会给你一个编号,这个编号是独一无二的,人们不需要过目不忘的本事,只需要根据号码就能把加工好的麻辣烫给你,方便有凭据。


map集合中有hashmap与treemap集合,这两个集合属hashmap最普遍使用。

那我们就用hashmap为例,讲一下用法

1、添加集合

package cn.com.socket;
import java.util.HashMap;
import java.util.Map;
public class Day {
public static void main(String[] args) {
/*author:jiangnan
 * date:2020.09.14
 *目的:循环遍历map集合,对集合进行crud 
 */
	Map map=new HashMap<>();
	//1、添加集合
	map.put("a", "A1,A6");
	map.put("a", "A3");
	System.out.print(map.size());
	//2、修改集合
	//3、删除集合
	//4、查询集合
}

}

map.put(key,value)是往集合里面添加数据 ,但是您注意了,key是独一无二的,不能重复。

如果重复了,怎么办?会覆盖掉之前的数据;

运行这个代码,打印集合的长度,是1;

明明添加了两次数据,怎么集合的长度是1.因为两次添加的集合的key是a,被覆盖了,map集合里面的数据应该是a:A3

java基础之对map集合进行增加改查与遍历_第1张图片 

 

2、修改集合

直接添加一个同样key,要更新的value,就可以了;

hashmap集合的key是独一无二的,如果有两个一样的key,那么后续的添加会覆盖掉之前的value

package cn.com.socket;
import java.util.HashMap;
import java.util.Map;
public class Day {
public static void main(String[] args) {
/*author:jiangnan
 * date:2020.09.14
 *目的:循环遍历map集合,对集合进行crud 
 */
	Map map=new HashMap<>();
	//1、添加集合
	map.put("a", "A1,A6");
	map.put("B", "A3");
	map.put("c", "A4");
	//2、修改集合
	map.put("B", "a2");
	System.out.println(map.get("B"));
	//3、删除集合
	//4、查询集合
}

}

 运行以后,发现集合的长度不会发生变化,相同的key,最后一次添加的value会覆盖掉之前的value

java基础之对map集合进行增加改查与遍历_第2张图片

3、删除集合

package cn.com.socket;
import java.util.HashMap;
import java.util.Map;
public class Day {
public static void main(String[] args) {
/*author:jiangnan
 * date:2020.09.14
 *目的:循环遍历map集合,对集合进行crud 
 */
	Map map=new HashMap<>();
	//1、添加集合
	map.put("a", "A1,A6");
	map.put("B", "A3");
	map.put("c", "A4");
	System.out.println("集合的长度是:"+map.size());
	//2、修改集合
	map.put("B", "a2");
	System.out.println("B对应的value值是:"+map.get("B"));
	//3、删除集合
	map.remove("a");
	System.out.println("集合的长度是:"+map.size());
	//4、查询集合
}

}

java基础之对map集合进行增加改查与遍历_第3张图片

4、循环遍历集合

先获取key的集合,循环遍历Key集合,然后根据key获取value;

package cn.com.socket;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Day {
public static void main(String[] args) {
/*author:jiangnan
 * date:2020.09.14
 *目的:循环遍历map集合,对集合进行crud 
 */
	Map map=new HashMap<>();
	//1、添加集合
	map.put("a", "A1,A6");
	map.put("B", "A3");
	map.put("c", "A4");
	map.put("d", "F4");
	map.put("e", "D4");
	map.put("f", "D4");
	System.out.println("集合的长度是:"+map.size());
	//2、修改集合
	map.put("B", "a2");
	System.out.println("B对应的value值是:"+map.get("B"));
	//3、删除集合
	map.remove("a");
	System.out.println("集合的长度是:"+map.size());
	//4、查询集合
	Set set=map.keySet();
	for (String s : set) {
		System.out.println(s+"="+map.get(s));
	}
}

}

 

java基础之对map集合进行增加改查与遍历_第4张图片

 5、循环遍历集合,符合某个条件的删除

在循环遍历的方法中删除集合某个元素,只有两个办法,第一、线程集合   第二、迭代器

第一种、线程集合ConcurrentHashMap

如果使用的是hashmap的话,因为删除元素以后的map集合与map.keySet()对不上,会报错

java基础之对map集合进行增加改查与遍历_第5张图片

 

package cn.com.socket;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
public class Day {
public static void main(String[] args) {
/*author:jiangnan
 * date:2020.09.14
 *目的:循环遍历map集合,对集合进行crud 
 */
	ConcurrentHashMap map=new ConcurrentHashMap<>();
	//1、添加集合
	map.put("a", "A1,A6");
	map.put("B", "A3");
	map.put("c", "A4"); 
	map.put("d", "F4");
	map.put("e", "D4");
	map.put("f", "D4");
	System.out.println("集合的长度是:"+map.size());
	//4、查询集合如果值为D4的话,就删除
	Set set=map.keySet();
    for (String s : set) {
	if(map.get(s).equals("D4")){
		map.remove(s);
	}
      }
	System.out.println("集合的长度是:"+map.size());
//	如果不用线程集合的话,需要用迭代器
}

}

 

 java基础之对map集合进行增加改查与遍历_第6张图片

第二种、迭代器

 

package cn.com.socket;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
public class Day {
public static void main(String[] args) {
/*author:jiangnan
 * date:2020.09.14
 *目的:循环遍历map集合,对集合进行crud 
 */
	HashMap map=new HashMap<>();
	//1、添加集合
	map.put("a", "A1,A6");
	map.put("B", "A3");
	map.put("c", "A4"); 
	map.put("d", "F4");
	map.put("e", "D4");
	map.put("f", "D4");
	System.out.println("集合的长度是:"+map.size());
	//4、查询集合如果值为D4的话,就删除
      Set set=map.keySet();
      Iterator it=set.iterator();
     while(it.hasNext()){
	 String key=it.next();
	 if(map.get(key).equals("D4")){
		 it.remove();
	 }
   }
	System.out.println("集合的长度是:"+map.size());
//	如果不用线程集合的话,需要用迭代器
}

}

java基础之对map集合进行增加改查与遍历_第7张图片

 


java基础之对map集合进行增加改查与遍历_第8张图片 

map集合原本6个数据,有2个满足条件的,如果删除成功的话,集合长度是4;
map.keyset()是在迭代这个集合;map.remove()是在删除集合里面的元素,两个同时在修改这个集合,导致报错;

要么使用线程集合,要么在迭代的时候时候迭代器线程;

 

你可能感兴趣的:(java基础)