0
点赞
收藏
分享

微信扫一扫

【参考答案】java基础练习:集合-Map(HashMap)、Collections工具类

夕阳孤草 2023-01-24 阅读 124

参考答案

班级有不同数量的学生,用map保存;循环取出学生信息

package com.qzcsbj.gift.test;

import java.util.*;

public class Test {
public static void main(String[] args) {
// 创建对象
Student s1 = new Student("tom", 3);
Student s2 = new Student("jack", 3);
Student s3 = new Student("liming", 3);

// 创建HashMap对象
HashMap<String, ArrayList<Student>> stringArrayListHashMap = new HashMap<>();

// 创建班级
String cname1 = "贝儿班";
String cname2 = "苗苗班";

// 学生放入列表
ArrayList<Student> students1 = new ArrayList<>();
students1.add(s1);
students1.add(s2);
ArrayList<Student> students2 = new ArrayList<>();
students2.add(s3);

// 列表放入班级
stringArrayListHashMap.put(cname1,students1);
stringArrayListHashMap.put(cname2,students2);


// 遍历方式一
Set<String> cname = stringArrayListHashMap.keySet();
for (String name:cname){
System.out.println("=======班级:"+name+"=======");
ArrayList<Student> li = stringArrayListHashMap.get(name);
for (Student s:li){
System.out.println(s);
}
}

System.out.println("\n*************************************\n");

// 遍历方式二
Set<Map.Entry<String, ArrayList<Student>>> entries = stringArrayListHashMap.entrySet();
for(Map.Entry<String, ArrayList<Student>> entry:entries){
System.out.println("=======班级:"+entry.getKey()+"=======");
ArrayList<Student> li =entry.getValue();
for (Student s:li){
System.out.println(s);
}
}
}
}

 

统计一个字符串中每个字符出现的次数,保存到HashMap集合中

package com.qzcsbj;

import java.util.HashMap;
import java.util.Map;


public class Test {
public static void main(String[] args) {
String str = "qzcsbj-*?>>>666";
Map<Character, Integer> map=new HashMap<Character, Integer>();
for(int i=0;i<str.length();i++){
char c = str.charAt(i);
if(map.containsKey(c)){
map.put(c, map.get(c)+1);
}else{
map.put(c, 1);
}
}
System.out.println(map);
}
}

 

 

统计一个字符串中每个字符出现的次数,保存到HashMap集合中,通过排序,打印输出次数最多的前三个字符及次数

package com.qzcsbj;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;


public class CcollectionsPractice {
public static void main(String[] args) {
String str = "qzcsbj-*?>>>666j";

Map<String, Integer> map = new HashMap<String, Integer>();

for (int i = 0; i < str.length(); i++) {
String c = str.charAt(i) + "";
map.put(c, map.containsKey(c) ? map.get(c) + 1 : 1);
}
System.out.println(map);

// 获取所有键值对的集合
Set<Map.Entry<String, Integer>> entries = map.entrySet();
ArrayList<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(entries);
// 自定义比较器,第二个参数是匿名内部类
Collections.sort(list,new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Map.Entry<String, Integer> o1,
Map.Entry<String, Integer> o2) {
if(o1.getValue()>o2.getValue()){
return -1;
}else if(o1.getValue()<o2.getValue()){
return 1;
}
return 0;
}
});

System.out.println(list);

System.out.println("出现次数最多的前三个字符及次数:");
for(int i=0;i<3;i++){
Map.Entry<String, Integer> entry = list.get(i);
System.out.println(entry.getKey()+"="+entry.getValue());
}
}
}

 

 

 

__EOF__


本文作者:持之以恒(韧) 


举报

相关推荐

0 条评论