Java_容器4-2_Map“分拣”思路

“分拣”思路:类似于快递中的分拣员,把不同地区的快递分拣在一起,在java中也有这样的思想,将同种属性的对象分拣在一起,下面我来归纳下Map中两种分拣思路。

注明:我是在尚学堂视频上看到的关于分拣思路,觉得非常有用,便以博客的形式记录并分析下来。

题目,计算i am a good boy and she is a good girl that we fall in love这句话中出现某个单词的次数

准备工作:

package TestMap;

public class Letter {
	private String name;
	private int count;
	
	public Letter() {
		
	}
	public Letter(String name, int count) {
		super();
		this.name = name;
		this.count = count;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getCount() {
		return count;
	}
	public void setCount(int count) {
		this.count = count;
	}
}

1、为所有的key创建容器,之后放到对应的Value

	public static void test01() {
		//存入一句话
		String str = "i am a good boy and she is a good girl";
	    //分割字符
		String[] strArray = str.split(" "); //以空格为分隔符进行分割
		//储存在Map中
		Map<String,Letter> letters = new HashMap<String,Letter>();
		//遍历
		for(String temp:strArray) {
			
		     // 第一种思路
		 //为所有的key创建容器
		if(!letters.containsKey(temp)) {
			letters.put(temp, new Letter());  //创建新的容器
			}
		 //在容器中放入对应的Value
		Letter le = letters.get(temp);  //直接使用容器
		le.setCount(le.getCount()+1);
		}
		//输出Map值
		Set<String> keys = letters.keySet();
		for(String key:keys) {
			Letter le = letters.get(key);
			System.out.println("字母:"+key+",次数"+le.getCount());
		}		
	}

2、第一次创建容器,并存放值Value;第二次之后,直接使用容器存储

    public  static void test02() {
    	//存入一句话
		String str = "i am a good boy and she is a good girl";
	    //分割字符
		String[] strArray = str.split(" "); //以空格为分隔符进行分割
		//储存在Map中
		Map<String,Letter> letters = new HashMap<String,Letter>();
		//遍历
		for(String temp:strArray) {
			
		     // 第二种思路

			 //第一次创建容器,并存放值Value
			Letter le = null;
			if(null == (le=letters.get(temp))) {
				le = new Letter();
				le.setCount(1);  //第一次值存放
				letters.put(temp, le);  
				}else {
			 //第二次之后,直接使用容器存储
			le.setCount(le.getCount()+1);  //已经有容器了
				}
			}
		//输出Map值
		Set<String> keys = letters.keySet();
		for(String key:keys) {
			Letter le = letters.get(key);
			System.out.println("字母:"+key+",次数"+le.getCount());
		}
	}

3、测试

public static void main(String[] args) {
	test01();
	System.out.println("######################");
	test02();
	}

结果:

总结:“分拣”思路是极其重要的,需要掌握。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值