作业
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();
}
}