📑前言
本文主要是【java】——java中list,map习题的文章,如果有什么需要改进的地方还请大佬指出⛺️
🎬作者简介:大家好,我是听风与他🥇
☁️博客首页:CSDN主页听风与他
🌄每日一句:狠狠沉淀,顶峰相见
目录
- 📑前言
- 1.map对value排序问题
- 2.对list中出现的字符串进行计数并存放在map中
- 3.将list中的数字字符串和字母字符串分割开
- 4.map计算成绩
- 5.遍历list中数据,姓名、邮箱采用键值对方式存入map
- 📑文章末尾
1.map对value排序问题
- map中存放着许多姓名:年龄等键值对数据,如{张三:2,李四:3}等数据,取出年龄最大的三个数据并输出
- 注意点:存放数据时,要使用有序的map,如linkedHashMap等数据结构
package test;import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;public class test1 {public static void main(String[] args) {// TODO Auto-generated method stubMap<String, Integer> map = new HashMap<>();map.put("zhangsan", 3);map.put("lisi", 1);map.put("wangwu", 2);map.put("zhaoliu", 4);map.put("xiha", 5);Map<String, Integer> ans = sortMap(map);int i=3;Iterator<Entry<String, Integer>> entries = ans.entrySet().iterator();while(i-->0) {Entry<String, Integer> entry = entries.next();System.out.println(entry.getKey()+":"+entry.getValue());}}public static Map<String, Integer> sortMap(Map<String, Integer> map){//利用Map的entrySet方法,转化为list进行排序List<Map.Entry<String, Integer>> entries = new ArrayList<>(map.entrySet());Collections.sort(entries, new Comparator<Map.Entry<String, Integer>>() {@Overridepublic int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {// TODO Auto-generated method stubreturn o2.getValue()-o1.getValue();}});//排序好的list,一定要放进LinkedHashMap,因为只有LinkedHashMap是根据插入顺序进行存储LinkedHashMap<String, Integer> linkedHashMap = new LinkedHashMap<>();for(Map.Entry<String, Integer> e:entries) {linkedHashMap.put(e.getKey(), e.getValue());}return linkedHashMap;}}
2.对list中出现的字符串进行计数并存放在map中
- list中存在许多字符串,对它们进行计数,并存放在map中
- 注意点:存放数据时,要使用有序的map,如linkedHashMap等数据结构
package test;import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;public class test2 {public static void main(String[] args) {// TODO Auto-generated method stubList<String> list = new ArrayList<>();list.add("apple");list.add("banana");list.add("apple");list.add("orange");list.add("banana");list.add("grape");list.add("grape");Map<String, Integer> map = f(list);System.out.println(map);Iterator<Entry<String, Integer>> entries = map.entrySet().iterator();while(entries.hasNext()) {Entry<String, Integer> entry = entries.next();System.out.println(entry.getKey()+":"+entry.getValue()+" ");}}public static Map<String, Integer> f(List<String> list){//注意hashmap是无序的,linkedHashMap是有序的。Map<String, Integer> map = new LinkedHashMap<>();for(String i:list) {map.put(i, map.containsKey(i)?map.get(i)+1:1);}return map;}}
3.将list中的数字字符串和字母字符串分割开
- list中有许多字符串,请你将数字字符串和字母字符串分割开
- 思路:根据数字和字母的acsll不同来进行区分
package test;import java.util.ArrayList;
import java.util.List;public class test3 {public static void main(String[] args) {// TODO Auto-generated method stubList<String> list = new ArrayList<>();list.add("123");list.add("abc");list.add("456");list.add("def");list.add("789");list.add("ghi");List<String> list1 = new ArrayList<>();List<String> list2 = new ArrayList<>();for(String i:list) {if(i.charAt(0)>=97&&i.charAt(0)<=122) {list2.add(i);}else {list1.add(i);}}System.out.println("数字列表:"+list1+",字母列表:"+list2);}}
4.map计算成绩
- 在map中存放着许多同学的名字和成绩,请你计算同学们语数英三门成绩的平均分
package test;import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;public class test4 {public static void main(String[] args) {// TODO Auto-generated method stubMap<String, List<Integer>> map = new LinkedHashMap<>();List<Integer> list1 = new ArrayList<>();list1.add(85);list1.add(90);list1.add(95);List<Integer> list2 = new ArrayList<>();list2.add(80);list2.add(85);list2.add(90);List<Integer> list3 = new ArrayList<>();list3.add(95);list3.add(100);list3.add(105);map.put("John", list1);map.put("Bob", list2);map.put("Alice", list3);Map<String, Double> map1 = f(map);for(String key:map1.keySet()) {System.out.println(key+":"+map1.get(key));}}public static Map<String, Double> f(Map<String, List<Integer>> map){Map<String, Double> map1 = new LinkedHashMap<>();Set<String> set=map.keySet();for(String i:set) {double avg=(double)(map.get(i).get(0)+map.get(i).get(1)+map.get(i).get(2))/3;map1.put(i, avg);}return map1;}}
5.遍历list中数据,姓名、邮箱采用键值对方式存入map
package test;import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;public class test5 {public static void main(String[] args) {// TODO Auto-generated method stubList<String> list = new ArrayList<>();list.add("John");list.add("john@qq.com");list.add("Alice");list.add("alice@qq.com");list.add("Bob");list.add("Bob@qq.com");Map<String, String> map=f(list);System.out.println(map);Set<String> set=map.keySet();for(String i:set) {System.out.println(i+":"+map.get(i));}}public static Map<String, String> f(List<String> list){Map<String, String> map = new LinkedHashMap<>();for(int i=0;i<list.size();i=i+2) {map.put(list.get(i), list.get(i+1));}return map;}
}