假如有以下email数据“aa@sohu.com,bb@ 163.com,cc@sina.com,..”现需要把email 中的用户部分和邮件地址部分分离,分离后以键值对应的方式放入HashMap
思路:我们要将Email的用户部分和邮件地址部分分离,分离后以键值对应的方式放入HashMap,要思考一下怎么将一整个字符变为aa souhu.com... 形式
aa@sohu.com,bb@ 163.com,cc@sina.com -> aa@sohu.com bb@ 163.com cc@sina.com ->aa sohu.com bb 163.com...形式
需要将字符串变为字符数组,再将字符数组中的字符串,字符化,开始截取;最后对map集合进行遍历进行了
点击查看代码
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Demo6 {public static void main(String[] args) {String s = "aa@sohu.com,bb@ 163.com,cc@sina.com,..";HashMap<Object, Object> map = new HashMap<>();String[] s1 = s.split(",");for (String str : s1) {
//方法一:String name = null;String address = null;char[] chars = str.toCharArray();for (int i = 0; i < str.length(); i++) {if(chars[i]=='@'){name = str.substring(0,i);address = str.substring(i+1);map.put(name,address);方法二:String[] split = str.split("@");if (!str.equals("...")) {map.put(split[0], split[1]);}}}}Set<Map.Entry<Object, Object>> entries = map.entrySet();for (Map.Entry<Object, Object> entry : entries) {System.out.println(entry);}}
}
例题二”需求过长放入下面detail中“
//4.给定一个包含学生姓名和成绩的字符串数组 `students`,格式为“姓名-成绩”,例如:`["Alice-85", "Bob-90", "Charlie-78", "David-92", "Emma-88"]` 。使用 `TreeMap` 来存储学生的姓名和成绩,并实现以下功能:
//1. 按照成绩从高到低的顺序输出学生的姓名和成绩。
//2. 计算并输出平均成绩。
//3. 找出成绩最高的学生姓名和成绩。
//4. 找出成绩最低的学生姓名和成绩。
//
//示例输入
//["Alice-85", "Bob-90", "Charlie-78", "David-92", "Emma-88"]
//
//示例输出
//按照成绩从高到低的顺序:
//David - 92
//Bob - 90
//Emma - 88
//Alice - 85
//Charlie - 78
//平均成绩:86.2
//成绩最高的学生:David - 92
//成绩最低的学生:Charlie - 78
创建学生类
点击查看代码
package com.shujia.demotest;public class Student implements Comparable<Student>{private String name;private int age;public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {returnname +"-" + age;}@Overridepublic int compareTo(Student o) {int i = o.getAge() - this.age;return (i==0)?o.getName().compareTo(this.name):i;}
}//需要重写compare to 方法,实现接口Comparable接口
测试类
点击查看代码
public class Demo2 {public static void main(String[] args) {TreeMap<String, Integer> map = new TreeMap<>();String[] students = {"Alice-85","Bob-90","Charlie-78","David-92","Emma-88"};//TODO:如何将字符串拆分;先把他变成字符串数组,然后再把字符串数组里的字符串进行拆分,将字符串变为char类型
// for (String student : students) {
// String name = null;
// String score = null;
// char[] chars = student.toCharArray();
// for (int i = 0; i < student.length(); i++) {
// if(chars[i]=='-'){
// name = student.substring(0,i);
// score = student.substring(i+1);
// map.put(name,Integer.parseInt(score));
// }
// }
// }for (String student : students) {String[] s1 = student.split("-");map.put(s1[0],Integer.parseInt(s1[1]));//根据规律新按照-进行前后拆分,形成了一个新的字符数组是【Alice,85】... }sort(map);getAvg(map);getMax(map);getMin(map);}public static void sort(TreeMap<String, Integer> map){//需要通过TreeSet,无法对map直接进行排序TreeSet<Student> set = new TreeSet<>();
// 方法一:// Set<Map.Entry<String, Integer>> entries = map.entrySet();
// for (Map.Entry<String, Integer> entry : entries) {
// String name = entry.getKey();
// Integer score = entry.getValue();
// set.add(new Student(name,score));
//
// }
// for (Student student : set) {
// System.out.println(student);
// }//方法二://TODO:通过map的建锁定map的值,通过调用map集合的get(),找到value//TODO:总体来说就是遍历map集合,把我们所需要的值塞到set集合for (String s : map.keySet()) {set.add(new Student(s,map.get(s)));}for (Student student : set) {System.out.println(student);}}public static void getAvg(TreeMap<String, Integer> map){int sum = 0;int i = 0;for (String s : map.keySet()) {sum+=map.get(s);i++;}System.out.println("平均成绩:"+sum/(i*1.0));}public static void getMax(TreeMap<String, Integer> map){//TODO: 我们要确立一个flag(一个标识)让条件执行一次int flag = 0;int max = 0;String name = null;for (String s : map.keySet()) {if(flag==0){max = map.get(s);flag++;}else{if(map.get(s)>max){max = map.get(s);name = s;}}}System.out.println("成绩最高的学生:"+name+max);}public static void getMin(TreeMap<String, Integer> map){int flag = 0;int min = 0;String name = null;for (String s : map.keySet()) {if(flag==0){min = map.get(s);flag++;}else{if(map.get(s)<min){min = map.get(s);name = s;}}}System.out.println("成绩最低的学生:"+name+min);}}