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;
	}
}

📑文章末尾

相关推荐
w_zero_one1 小时前
递归算法(一)
java·开发语言·算法
SL_staff2 小时前
私有化低代码不是减配版开发:JVS双模式建模如何重建IT交付信任
java·低代码·spring cloud
墨着染霜华2 小时前
Redocly 生成 OpenAPI 接口文档踩坑实录|Node 版本兼容 + 接口地址错误问题解决
java
文丑颜不良啊2 小时前
LeetCode1881~1990题目解析
java·leetcode
十碗饭吃不饱3 小时前
后端运维:网络联通、进程查询、Java服务启动脚本
java·运维·网络
T_Wizard3 小时前
后端转 AI 应用开发,我先把这 12 个名词理清了:一张图看懂架构、RAG、Tool Calling 与 MCP
java·ai编程
杨航 AI3 小时前
JEV的用法
java·前端·数据库
灿飞3 小时前
Kotlin与Java虚拟机七:空安全:把十亿美元的错误消灭在类型系统里
java·kotlin
知识搬运临时工4 小时前
JVM 删掉偏向锁之后,一次无竞争锁从 0.3 纳秒变成 5.4 纳秒
java
IT枫斗者枫哥4 小时前
用了BigDecimal还差一分?用四组Java代码查清原因
java·后端