Map双列集合作业复习

作业

1./*分析以下需求,并用代码实现:

(1)统计每个单词出现的次数

(2)有如下字符串"If you want to change your fate I think you must come to the ujiuye to learn java"(用空格间隔)

(3)打印格式:

to=3

think=1

you=2*/

import java.util.LinkedHashMap;

import java.util.Map.Entry;

 

/*分析以下需求,并用代码实现:

(1)统计每个单词出现的次数

(2)有如下字符串"If you want to change your fate I think you must come to the ujiuye to learn java"(用空格间隔)

(3)打印格式:

to=3

think=1

you=2*/

public class Homework01 {

 

public static void main(String[] args) {

String str = "If you want to change your fate I think you must come to the ujiuye to learn java";

LinkedHashMap<String,Integer> map = new LinkedHashMap<String,Integer>();

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

for(String s : strs) {

map.put(s, map.containsKey(str)?map.get(str)+1:1);//一定要认真,看清楚变量

}

for(Entry<String,Integer> entry : map.entrySet()) {

System.out.println(entry.getKey() + "=" + entry.getValue());

}

 

}

 

}

 

2./*案例2:已知 List<String> list = new ArrayList<String>();

list.add("张三丰,北京");

list.add("李四丰,上海");

list.add("王二小,北京");

list.add("小明,河北");

list.add("小毛,北京");

list.add("王五,北京");   

要求:求出每个地区有多少人,都是谁?

 

例如: 北京 4人   张三丰 王二小 小毛 王五*/

import java.util.ArrayList;

import java.util.LinkedHashMap;

import java.util.List;

import java.util.Map.Entry;

 

/*案例2:已知 List<String> list = new ArrayList<String>();

list .add("张三丰,北京");

list .add("李四丰,上海");

list .add("王二小,北京");

list .add("小明,河北");

list .add("小毛,北京");

list .add("王五,北京");   

要求:求出每个地区有多少人,都是谁?

 

例如: 北京 4人   张三丰 王二小 小毛 王五*/

public class Homework02 {

 

public static void main(String[] args) {

 List<String> list = new ArrayList<String>();

 list.add("张三丰,北京");

 list.add("李四丰,上海");

 list.add("王二小,北京");

 list.add("小明,河北");

 list.add("小毛,北京");

 list.add("王五,北京");  

 LinkedHashMap<String,String> map1 = new LinkedHashMap<String,String>();

 //存储姓名,地区

 LinkedHashMap<String,Integer> map2 = new LinkedHashMap<String,Integer>();

 //存储地区,出现次数

 for(String str : list) {

 String[] strs = str.split(",");

 String key = strs[0];

 String value = strs[1];

 map1.put(key, value);

 map2.put(value, map2.containsKey(value)?map2.get(value)+1:1);

 }

 

 for(Entry<String,Integer> entry2 : map2.entrySet()) {

 StringBuilder sb = new StringBuilder();//定义在循环里面

 sb.append(entry2.getKey()).append(entry2.getValue()).append("人 ");

 for(Entry<String,String> entry1 : map1.entrySet()) {

 sb.append(entry1.getValue().equals(entry2.getKey())?entry1.getKey()+" ":"");

 }

 System.out.println(sb.substring(0,sb.length()-1));

 }

 

 

}

 

}

3./*做一个方法,方法有两个参数。参数1 Map<String,String>  参数2:String value

方法完成的功能是:根据value获取key。  

public  static 返回值类型  getKeyByValue(Map<String,String>,String value){

}

返回值类型,自身思考用什么类型???

getKeyByValue(map,"111")

例如:传入的map中的数据为:

map.put("aaa","111");  

map.put("bbb","111");

map.put("ccc","111");

map.put("ddd","222");    

 

方法就应该获得:     "aaa"  "bbb"  "ccc"*/

import java.util.LinkedHashMap;

import java.util.Map;

import java.util.Map.Entry;

 

/*做一个方法,方法有两个参数。参数1 Map<String,String>  参数2:String value

方法完成的功能是:根据value获取key。  

public  static 返回值类型  getKeyByValue(Map<String,String> map,String value){

}

返回值类型,自身思考用什么类型???

getKeyByValue(map,"111")

例如:传入的map中的数据为:

map.put("aaa","111");  

map.put("bbb","111");

map.put("ccc","111");

map.put("ddd","222");    

 

方法就应该获得:     "aaa"  "bbb"  "ccc"*/

public class Homework03 {

 

public static void main(String[] args) {

Map<String,String> map = new LinkedHashMap<String,String>();

map.put("aaa","111");  

map.put("bbb","111");

map.put("ccc","111");

map.put("ddd","222");

System.out.println(getKeyByValue(map,"111"));

 

}

public static String getKeyByValue(Map<String,String> map,String value) {

StringBuilder sb = new StringBuilder();

for(Entry<String,String> entry : map.entrySet()) {

if(entry.getValue().equals(value)) {

sb.append("\"").append(entry.getKey()).append("\"" + " ");

}//认真思考这个关系

 

}

return sb.toString();

}

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值