java中list,map习题

📑前言

本文主要是【java】------java中list,map习题的文章,如果有什么需要改进的地方还请大佬指出⛺️

🎬作者简介:大家好,我是听风与他🥇

☁️博客首页:CSDN主页听风与他

🌄每日一句:狠狠沉淀,顶峰相见

目录

1.map对value排序问题

  • map中存放着许多姓名:年龄等键值对数据,如{张三:2,李四:3}等数据,取出年龄最大的三个数据并输出
  • 注意点:存放数据时,要使用有序的map,如linkedHashMap等数据结构
java 复制代码
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 stub
		Map<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>>() {
			@Override
			public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
				// TODO Auto-generated method stub
				return 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等数据结构
java 复制代码
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 stub
		List<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不同来进行区分
java 复制代码
package test;

import java.util.ArrayList;
import java.util.List;

public class test3 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		List<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中存放着许多同学的名字和成绩,请你计算同学们语数英三门成绩的平均分
java 复制代码
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 stub
		Map<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

java 复制代码
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 stub
		List<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;
	}
}

📑文章末尾

相关推荐
朦胧之8 小时前
AI 编程-老项目改造篇
java·前端·后端
程序猿大帅12 小时前
别再只当调包侠了:用 Spring AI 落地 Function Calling,我被大模型硬生生砸出了三个大坑
java
程序员晓琪13 小时前
约定大于配置:基于 Java 包名自动生成 API 版本路由的最佳实践
java·spring boot·后端
Flittly13 小时前
【AgentScope Java新手村系列】(11)中断与恢复
java·spring boot·spring
众少成多积小致巨14 小时前
JNI (Java Native Interface) 技术手册中文参考指南
android·java·c++
东坡白菜14 小时前
破局全栈:前端开发的Java入门实战记录—JPA(2)
java·后端
SimonKing20 小时前
艹,维护AI写的代码,我心态崩了......
java·后端·程序员
用户2986985301421 小时前
Java Word 文档样式进阶:段落与文本背景色设置完全指南
java·后端
小bo波2 天前
从"任意文件复制"深挖Java I/O:字符流与字节流的本质抉择
java·nio·io流·后端开发·文件复制
nanxun8863 天前
记一次诡异的 Docker 容器"串包"故障排查
java