hashmap储存有向图_HashMap经典储存 分拣思路

this is a cat and that is a mice and where is the food?

统计每个单词出现的次数

存储到map中,因为map里每个key只能出现一次

String=key;

value为自定义类型

“分”拣思路

1.为所有key创建容器

第二次才把对应的value存放进去

2.第一次创建容器,并且把value存放进去

第二次之后,直接使用容器,存放value

自定义类

public class Letter {

private String name;

private int count;

public Letter(String name, int count) {

super();

this.name = name;

this.count = count;

}

public Letter() {

}

get set 方法就省略了,这个里面,只用到了count来存放字符出现的次数

这个类里面一开始我用Integer来定义count,然后空构造器会自动把Integer赋值为null;此时我下面程序里面的count+1就会出错,因为count+1的过程,自己先得拆分,调用的是count.intValue();但是count为null此时调用方法会提示空指针错误了!!

而int则会默认赋值为0,如果要用Integer的话,在空构造器里头就得给他赋值为0啦。

思路一

public static void main(String[] args) {

//放到字符串里面

String string=new String("this is a cat and that is a mice and where is the food");

//以空格区分,将string分开

String[] strs=string.split(" ");

//存储到map中

Map letters=new HashMap();

for(String temp:strs){

//为每一个key创建一个容器,似乎把Letter当做存放的容器了

if(!letters.containsKey(temp)){

letters.put(temp, new Letter());

}

}

for(String temp:strs){

Letter col=letters.get(temp);//获取上面创建的容器,因为key是字符串,所以,每个字符串对应一个容器

col.setCount(col.getCount()+1);//如果碰见一次一样的就加一

}

//输出map的值

Set keys=letters.keySet();

for(String temp:keys){

Letter col=letters.get(temp);

Integer i=col.getCount();

System.out.println("单词"+temp+"出现次数:"+i);

}

}

}

思路二

Letter col=null; //简化程序

for(String temp:strs){

//为每一个key创建一个容器,然后把value放进去

if(null==(col=letters.get(temp))){//没有就建

//Letter col=new Letter();

col=new Letter();

col.setCount(1); //放进去,即数目加1

letters.put(temp,col);

}else{

col.setCount(col.getCount()+1); //放进去,即数目加1

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值