package zuoye;
import javax.xml.crypto.dsig.keyinfo.KeyName;
import java.security.Key;
import java.util.*;
public class lianxi_1_6 {
public static void main(String[] args) {
/**
* 1.使用Map接口的实现类完成员工工资(姓名–工资)的摸拟:
* S 1)添加几条信息
* 2)列出所有的员工姓名
* 3列出所有员工姓名及其工资
* 4)删除名叫“Tom”的员工信息
* 5)输出Jack的工资,并将其工资加1000元(通过取值实现)
* 6)将所有工资低于1000元的员工的工资上涨20%(通过取值实现)
*/
//1)添加几条信息
Map<String,Double> map=new HashMap<>();
map.put("Tom",1000.0);
map.put("jack",1000.0);
map.put("liuxing", 900.0);
map.put("赵信",500.0);
// 2)列出所有的员工姓名
Collection <String> k=map.keySet();
for (String i:k){
System.out.println(i);
}
//3列出所有员工姓名及其工资
System.out.println(map);
//4)删除名叫“Tom”的员工信息
map.remove("Tom");
System.out.println(map);
//5)输出Jack的工资,并将其工资加1000元(通过取值实现)
Set<Map.Entry<String,Double>>entries=map.entrySet();
for (Map.Entry<String,Double>entry:entries){
String key=entry.getKey();
double value=entry.getValue();
if (key.startsWith("jack")){
map.put(key,value+1000);
}
}
System.out.println(map);
// 6)将所有工资低于1000元的员工的工资上涨20%(通过取值实现)
Set<Map.Entry<String,Double>>entries1=map.entrySet();
for (Map.Entry<String, Double>entry:entries1){
String key=entry.getKey();
double value=entry.getValue();
if (value<1000){
map.put(key,value*0.2+value);
}
}
System.out.println(map);
/**
* 2.分析以下需求,并用代码实现:
* (1)定义一个学生类Student,包含属性:姓名(String name)、年龄(int age)
* (2)定义Map集合,用Student对象作为key,用字符串(此表示表示学生的住址)作为value
* (3)利用三种方式遍历Map集合中的内容
*/
// * (1)定义一个学生类Student,包含属性:姓名(String name)、年龄(int age)
// * (2)定义Map集合,用Student对象作为key,用字符串(此表示表示学生的住址)作为value
Map <Student,String> map1=new HashMap<>();
map1.put(new Student("张三",23),"泉舜上城");
map1.put(new Student("李四",18),"香港城");
map1.put(new Student("王五",17),"漓江公馆");
System.out.println(map1);
System.out.println("---------------------方法一-----------------");
//方法一
Set<Student> students = map1.keySet();
Iterator<Student>iterator=students.iterator();
while (iterator.hasNext()){
Student student=iterator.next();
String vlo=map1.get(student);
System.out.println("key"+student+"value"+vlo);
}
System.out.println("------------------方法二----------------");
Collection <String>collections=map1.values();
for (String c:collections){
System.out.println("value:"+c);
}
System.out.println("-------------------方法三------------------");
Set<Map.Entry<String,Double>>entrySet=map.entrySet();
for (Map.Entry<String,Double> entry:entrySet){
String key=entry.getKey();
Double value=entry.getValue();
System.out.println("key:"+key+"---value:"+value);
}
/**
*3.统计一个字符串中字母字符,数字字符出现的次数。(不考虑其他字符)
*/
Scanner sc=new Scanner(System.in);
System.out.println("请随意输入英文字符:");
String str=sc.next();
System.out.println(str);
//字符 次数
Map<String,Integer>map3=new LinkedHashMap<>();
for (int i = 0; i < str.length(); i++) {
String s=str.charAt(i)+"";
if (map3.containsKey(s)){//存在 获取当前的次数+1
map3.put(s,map3.get(s)+1);
}else {//不存在 直接存入 初始化次数+1
map3.put(s,1);
}
}
System.out.println(map);
Set<String> keySet = map.keySet(); //优化输入方式
for (String key:keySet){
Integer value = map3.get(key);
System.out.print(key+"("+value+")");
}
}
}
class Student{
private String name;
public int age;
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
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;
}
}