【java笔记】Map,HashMap,Collections

5.1 Map的概述和使用

package demo11Map;

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

public class Demo01Map {
    public static void main(String[] args) {
        Map<String,String> map=new HashMap<String,String>();
        map.put("021540630","单宏远");
        map.put("021540631","张广浩");
        map.put("021540632","马硕");
        System.out.println(map);
    }
}

5.2 Map的基本使用操作

package demo11Map;

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

public class Demo01Map {
    public static void main(String[] args) {
        Map<String,String> map=new HashMap<String,String>();
        map.put("021540630","单宏远");
        map.put("021540631","张广浩");
        map.put("021540632","马硕");

        //根据键值删除元素
        System.out.println(map.remove("021540630"));

        //看是否包含键值
        System.out.println(map.containsKey("021540631"));//true

        //看是否包含元素
        System.out.println(map.containsValue("张广浩"));//true

        //清空
        //map.clear();

        System.out.println(map.isEmpty());

        System.out.println(map.size());

        System.out.println(map);
    }
}
/*
单宏远
true
true
false
2
{021540632=马硕, 021540631=张广浩}

 */

5.3 Map集合的获取功能

package demo11Map;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Demo02Get {
    public static void main(String[] args) {
        Map<Integer,String> map=new HashMap<>();
        map.put(001,"杜琪峰");
        map.put(002,"徐克");
        map.put(003,"王晶");

        //根据键值获取元素
        System.out.println(map.get(001));
        
        //set集合储存键值
        Set<Integer> set=map.keySet();
        for(Integer i:set){
            System.out.println(i);
        }
        
        //collection集合储存元素
        Collection<String> co=map.values();
        for(String s:co){
            System.out.println(s);
        }
    }
}
/*
杜琪峰
1
2
3
杜琪峰
徐克
王晶
 */

5.4 Map的第一种遍历方法

package demo11Map;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/*
Map集合的遍历(方法1)
 */
public class Demo03Map {
    public static void main(String[] args) {
        Map<Integer,String> map=new HashMap<>();
        map.put(001,"杜琪峰");
        map.put(002,"徐克");
        map.put(003,"王晶");

        //keySet得到键值
        Set<Integer> set=map.keySet();

        for(Integer i:set){
            String val = map.get(i);
            System.out.println(i+","+val);
        }
    }
}

5.5 Map的第二种遍历方法

package demo11Map;

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

/*
使用键值对对象来遍历map
 */
public class Demo04Map {
    public static void main(String[] args) {
        Map<Integer,String> map=new HashMap<>();
        map.put(001,"杜琪峰");
        map.put(002,"徐克");
        map.put(003,"王晶");

        Set<Map.Entry<Integer, String>> en = map.entrySet();
        for(Map.Entry<Integer, String> u:en){
            Integer key = u.getKey();
            String value = u.getValue();
            System.out.println(key+","+value);
        }
    }
}
/*
1,杜琪峰
2,徐克
3,王晶
 */

5.6 HashMap存储学生对象并遍历

package demo11Map;

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

public class Demo05Student {
    public static void main(String[] args) {
        Map<String,Student> map=new HashMap<>();

        Student s1=new Student("王麟",33);
        Student s2=new Student("崔子格",34);
        Student s3=new Student("周洁琼",23);

        map.put("singer001",s1);
        map.put("singer002",s2);
        map.put("singer003",s3);

        Set<Map.Entry<String, Student>> set = map.entrySet();

        //遍历
        for(Map.Entry<String,Student> s:set){
            String key = s.getKey();
            Student value = s.getValue();
            System.out.println(key+","+value.getName()+","+value.getAge());
        }
    }
}
/*
singer001,王麟,33
singer003,周洁琼,23
singer002,崔子格,34
 */

5.7 HashMap储存学生类为键值

package demo11Map;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/*
更改元素要重写Student方法
 */
public class Demo06HashMap {
    public static void main(String[] args) {
        Map<Student,String> map=new HashMap<>();

        Student s1=new Student("吴京",38);
        Student s2=new Student("吴彦祖",42);
        Student s3=new Student("吴老二",78);
        Student s4=new Student("吴老二",78);


        map.put(s1,"北京");
        map.put(s2,"香港");
        map.put(s3,"铁岭");
        map.put(s4,"沈阳");

        Set<Map.Entry<Student, String>> set = map.entrySet();

        for(Map.Entry<Student,String> s:set){
            int age = s.getKey().getAge();
            String name = s.getKey().getName();
            String value = s.getValue();
            System.out.println(age+"的"+name+"住在"+value);
        }

    }}
    /*
    38的吴京住在北京
42的吴彦祖住在香港
78的吴老二住在沈阳
     */

5.8 ArrayList集合存储HashMap元素并遍历

package demo11Map;

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

/*
ArrayList集合存储HashMap元素并遍历
 */
public class Demo07ArrayList {
    public static void main(String[] args) {
        ArrayList<Map<String,String>> arr=new ArrayList<>();

        Map<String,String> m1=new HashMap<>();
        m1.put("贾乃亮","李小璐");
        m1.put("王宝强","马蓉");
        arr.add(m1);

        Map<String,String> m2=new HashMap<>();
        m2.put("文章","马伊琍");
        m2.put("谢霆锋","张柏芝");
        arr.add(m2);

        Map<String,String> m3=new HashMap<>();
        m3.put("刘恺威","杨幂");
        m3.put("汪峰","章子怡");
        arr.add(m3);

        for(Map<String,String> s:arr){
            Set<String> set = s.keySet();
            for(String str:set){
                String s1 = s.get(str);
                System.out.println(str+","+s1);
            }

        }
    }
}
/*
贾乃亮,李小璐
王宝强,马蓉
文章,马伊琍
谢霆锋,张柏芝
汪峰,章子怡
刘恺威,杨幂
 */

5.9 用HashMap遍历ArrayList

package demo11Map;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Set;

/*
用HashMap遍历ArrayList
 */
public class Demo08HashMap {
    public static void main(String[] args) {
        HashMap<String, ArrayList<String>> hm=new HashMap<>();
        
        ArrayList<String> sg=new ArrayList<>();
        sg.add("赵子龙");
        sg.add("张光北");
        ArrayList<String> sh=new ArrayList<>();
        sh.add("西门庆");
        sh.add("杜淳");
        ArrayList<String> xy=new ArrayList<>();
        xy.add("唐三藏");
        xy.add("迟重瑞");
        
        hm.put("三国",sg);
        hm.put("水浒",sh);
        hm.put("西游",xy);

        Set<String> keyset = hm.keySet();
        for(String s:keyset){
            ArrayList<String> arr = hm.get(s);
            for(String ss:arr){
                System.out.println(ss+"是"+s+"的");
            }
        }

    }
}

5.10 统计输入字符串中字符的种类和个数

package demo11Map;

import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;

/*
统计字符串中每个字符出现的个数
 */
public class Demo09 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入字符串");
        String str = sc.nextLine();

        //创建HashMap集合
        HashMap<Character,Integer> hm=new HashMap<>();

        //获取每一个字符
        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            Integer value = hm.get(ch);
            if(hm.get(ch)==null){
                hm.put(ch,1);
            }else{
                value++;
                hm.put(ch,value);
            }
        }

        //用StringBuilder拼接字符串
        StringBuilder sb=new StringBuilder();
        Set<Character> key = hm.keySet();
        for(Character s:key){
            Integer value = hm.get(s);
            sb.append(s).append("(").append(value).append(")");
        }
        String result = sb.toString();
        System.out.println(result);
    }
}
/*
请输入字符串
wozhanzaicaoyuanwangbeijing
a(5)b(1)c(1)e(1)g(2)h(1)i(3)j(1)n(4)o(2)u(1)w(2)y(1)z(2)
 */

5.11 Collections的概述和基本使用

package demo11Map;

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

public class Demo10Collections {
    public static void main(String[] args) {
        List<Integer> list=new ArrayList<>();

        list.add(20);
        list.add(40);
        list.add(30);
        list.add(10);
        list.add(50);

        //Collections.sort(list);
        //Collections.reverse(list);
        Collections.shuffle(list);//随机排序

        System.out.println(list);
    }
}

5.12 ArrayList储存学生对象并排序(Collections.sort)

package demoArray;

import java.util.*;

public class Demo03ArrayList {
    public static void main(String[] args) {
        Student s1=new Student("guofucheng",39);
        Student s2=new Student("liming",39);
        Student s3=new Student("liudehua",42);
        Student s4=new Student("zhangxueyou",57);

        List<Student> list=new ArrayList<>();

        list.add(s1);
        list.add(s2);
        list.add(s3);
        list.add(s4);

        Collections.sort(list, new Comparator<Student>() {
            @Override
            public int compare(Student s1, Student s2) {
                int sum=s1.getAge()-s2.getAge();
                int sum2=sum == 0?s1.getName().compareTo(s2.getName()):sum;
                return sum2;

            }
        });
        for(Student s:list){
            System.out.println(s.getAge()+"的"+s.getName()+"帅到喷汁");
        }
    }
}

5.13 模拟斗地主

package demoArray;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;

/*
模拟斗地主发牌过程
 */
public class Demo04Poker {
    public static void main(String[] args) {
        //ArrayList添加Poker
        String[] huase={"♥","♠","♣","♦"};
        String[] dianshu={"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
        ArrayList<String> poker=new ArrayList<>();
        for(String s1:huase){
            for(String s2:dianshu){
                String xiaopai = s1 + s2;
                poker.add(xiaopai);
            }
        }
        poker.add("小王");
        poker.add("大王");

        //洗牌
        Collections.shuffle(poker);

        //发牌
        ArrayList<String> zjhPoker=new ArrayList<>();
        ArrayList<String> ztaPoker=new ArrayList<>();
        ArrayList<String> zbzPoker=new ArrayList<>();
        ArrayList<String> dipai=new ArrayList<>();

        for(int i=0;i<poker.size();i++){
            String pai=poker.get(i);
            if(i>=poker.size()-3){
                dipai.add(pai);
            }else if(i%3==0){
                zjhPoker.add(pai);
            }else if(i%3==1){
                ztaPoker.add(pai);

            }else if(i%3==2){
                zbzPoker.add(pai);
            }

        }

        //看牌
        LookPoker("张天爱",ztaPoker);
        LookPoker("张家辉",zjhPoker);
        LookPoker("张柏芝",zbzPoker);
        LookPoker("底牌",dipai);

        //System.out.println(poker);
        //System.out.println(ztaPoker);

    }
    //看牌
    public static void LookPoker(String name,ArrayList<String> eachPoker){
        System.out.print(name+"的牌是:");
        for(String s:eachPoker){
            System.out.print(s+" ");

        }
        System.out.println();
    }
}
/*
张天爱的牌是:♦7 ♥A ♠10 ♥4 ♥Q ♥8 ♣7 ♥6 ♣Q ♥5 ♣J ♦A 大王 ♥7 ♦J ♣10 ♣3 
张家辉的牌是:♠4 ♠8 ♦5 ♦4 小王 ♠Q ♣6 ♦K ♦8 ♣9 ♣K ♦2 ♠A ♠K ♦6 ♥J ♣2 
张柏芝的牌是:♠3 ♣4 ♦9 ♥10 ♠6 ♠7 ♥K ♠5 ♥3 ♥9 ♦10 ♦3 ♥2 ♦Q ♣8 ♠2 ♣A 
底牌的牌是:♠9 ♠J ♣5 
 */
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值