Java笔记第三弹

Map集合的获取功能
V get(Object key);//根据键获取值
Set<K> keySet();//获取所有键的集合
Collection<K> values();//获取所有值的集合
Set<Map.Entry<K,V>>entrySet();//获取所有键值对对象的集合
相关应用:
//获取值
System.out.println(map.get("1"));//如果存在,返回相应键值   反之,返回null
//获取所有键的集合
import java.util.*;

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

        map.put("1","lili");
        map.put("2","zhangliang");
        map.put("3","wangwu");

        Set<String> keySet=map.keySet();
        for(String ss:keySet){
            System.out.println(ss);
        }
    }
}
//获取所有值的集合
import java.util.*;

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

        map.put("1","lili");
        map.put("2","zhangliang");
        map.put("3","wangwu");

        Collection<String> cc=map.values();
        for(String ss:cc){
            System.out.println(ss);
        }
    }
}
Map集合的遍历方式
//方式一
import java.util.*;

public class Main {
    public static void main(String[] args){
        Map<String> mm=new HashMap<String>();
        mm.put("1","zhangliang");
        mm.put("2","lili");
        mm.put("3","wangwu");
        
        Set<String> ss=map.keySet();
        for(String s:ss){
            String value=mm.get(s);
            System.out.println(s+","+value);
        }
    }
}

//方式二
import java.util.*;

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

        map.put("1","lili");
        map.put("2","zhangliang");
        map.put("3","wangwu");

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

       for(Map.Entry<String,String> mm:ss){
           String key=mm.getKey();
           String value=mm.getValue();
           System.out.println(key+","+value);
       }
    }
}
案例:HashMap集合存储学生对象并遍历
//Main.java
import java.util.*;

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

        Student s1=new Student("zhangliang",19);
        Student s2=new Student("wangwu",20);
        Student s3=new Student("lili",18);

        map.put("12",s1);
        map.put("23",s2);
        map.put("34",s3);

        //方式一
        Set<String> sss=map.keySet();
        for(String sa:sss){
            Student value=map.get(sa);
            System.out.println(sa+","+value.getName()+","+value.getAge());
        }

        //方式二
        Set<Map.Entry<String,Student>> ss=map.entrySet();
        for(Map.Entry<String,Student> me:ss){
            String key=me.getKey();
            Student value=me.getValue();
            System.out.println(key+","+value.getName()+","+value.getAge());
        }


    }
}
//Student.java已经省略
HashMap集合存储学生对象并遍历
//Main.java
import java.util.*;

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

        Student s1=new Student("wangwu",19);
        Student s2=new Student("lili",18);
        Student s3=new Student("lisi",20);

        map.put(s1,"shi");
        map.put(s2,"jia");
        map.put(s3,"zhuang");

        Set<Student> set=map.keySet();

        //方式一
        for(Student s:set){
            String value=map.get(s);
            System.out.println(s.getName()+","+s.getAge()+","+value);
        }

        System.out.println("----------------------");

        //方式二
        Set<Map.Entry<Student,String>> ss=map.entrySet();

        for(Map.Entry<Student,String> me:ss){
            Student key=me.getKey();
            String value=me.getValue();
            System.out.println(key.getName()+","+key.getAge()+","+value);
        }
    }
}
//Student.java已省略
案例:ArrayList集合存储HashMap元素并遍历
import java.util.*;

public class Main {
    public static void main(String[] args) {
        ArrayList<HashMap<String,String>> arr=new ArrayList<HashMap<String,String>>();
        HashMap<String,String> hh=new HashMap<String,String>();

        hh.put("1","3");
        hh.put("2","4");
        hh.put("5","7");

        arr.add(hh);
        
        for(HashMap<String,String> me:arr){
            Set<String> keyset=hh.keySet();
            for(String ss:keyset){
                String s1=hh.get(ss);
                System.out.println(ss+","+s1);
            }
        }
    }
}
案例:HashMap集合存储ArrayList元素并遍历
import java.util.*;

public class Main {
    public static void main(String[] args) {
        HashMap<String,ArrayList<String>> hm=new HashMap<String,ArrayList<String>>();
        ArrayList<String> arr=new ArrayList<String>();

        arr.add("shi");

        hm.put("石",arr);

        Set<String> keyset=hm.keySet();
        for(String s:keyset){
            ArrayList<String> aa=hm.get(s);
            for(String mm:aa){
                System.out.println(mm);
            }
        }
    }
}
案例:统计字符串中每个字符出现的次数
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        //输入字符串
        String s=sc.nextLine();
        HashMap<Character,Integer> hm=new HashMap<Character,Integer>();
        for(int i=0;i<s.length();i++){
           char key= s.charAt(i);//键
           Integer ii=hm.get(key);
           if(ii==null){
               hm.put(key,1);
           }else{
               ii++;
               hm.put(key,ii);
           }
        }
//分割
        StringBuilder sb=new StringBuilder();
        Set<Character> keyset=hm.keySet();
        for(Character key:keyset){
            Integer value=hm.get(key);
            //拼接
            sb.append(key).append("(").append(value).append(")");
        }
        //转换为字符串
        String result=sb.toString();
        //输出
        System.out.println(result);
    }
}

Collections

针对集合操作的工具类
public static <T extends Comparable<?super T>> void sort(List<T> list);//升序排列
public static void reverse(List<?> list);//反转指定列表中元素的顺序
public static void shuffle(List<?> list);//使用默认的随机源随机排列指定的列表
相关应用:
//升序排列
Collections.sort(ll);
//反转既定序列
Collections.reverse(ll);
//随机排序
Coolections.shuffle(ll);
案例:ArrayList存储学生对象并排序
import java.util.*;

public class Main {
    public static void main(String[] args) {
        ArrayList<Student> arr=new ArrayList<Student>();

        Student s1=new Student("lili",19);
        Student s2=new Student("wangwu",19);
        Student s3=new Student("zhangliang",18);

        arr.add(s1);
        arr.add(s2);
        arr.add(s3);

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

        for(Student s:arr){
            String name=s.getName();
            int age=s.getAge();

            System.out.println(name+","+age);
        }
    }
}
案例:模拟斗地主
//基础版
import java.util.*;

public class Main {
    public static void main(String[] args) {
        ArrayList<String> arr=new ArrayList<String>();

        //定义花色数组
        String[] colors={"♥","♠","♦","♣"};
        //定义数字数组
        String[] numbers={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
        for(String color:colors){
            for(String number:numbers){
                arr.add(color+number);
            }
        }
        arr.add("小王");
        arr.add("大王");

        //洗牌
        Collections.shuffle(arr);

        //发牌
        ArrayList<String> aarr=new ArrayList<String>();
        ArrayList<String> barr=new ArrayList<String>();
        ArrayList<String> carr=new ArrayList<String>();
        ArrayList<String> darr=new ArrayList<String>();

        for(int i=0;i<arr.size();i++){
            String poker=arr.get(i);

            if(i>=arr.size()-3){
                darr.add(poker);
            }else if(i%3==0){
                aarr.add(poker);
            }else if(i%3==1){
                barr.add(poker);
            }else{
                carr.add(poker);
            }
        }

        looker("a",aarr);
        looker("b",barr);
        looker("c",carr);
        looker("d",darr);
    }
    public static void looker(String name,ArrayList<String> arr){
        System.out.println(name+"的牌是:");
        for(String poker:arr){
            System.out.println(poker+" ");
        }
    }
}
//升级版
import java.util.*;

public class Main {
    public static void main(String[] args) {
        HashMap<Integer,String> hm=new HashMap<Integer,String>();
        ArrayList<Integer> arr=new ArrayList<Integer>();
        //定义花色数组
        String[] colors={"♥","♠","♦","♣"};
        //定义数字数组
        String[] numbers={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};

        int index=0;
        for(String number:numbers){
            for(String color:colors){
                hm.put(index,color+number);
                arr.add(index);
                index++;
            }
        }
        hm.put(index,"小王");
        arr.add(index);
        index++;
        hm.put(index,"大王");
        arr.add(index);

        //洗牌
        Collections.sort(arr);

        //发牌
        TreeSet<Integer> aarr=new TreeSet<Integer>();
        TreeSet<Integer> barr=new TreeSet<Integer>();
        TreeSet<Integer> carr=new TreeSet<Integer>();
        TreeSet<Integer> darr=new TreeSet<Integer>();

        for(int i=0;i<arr.size();i++){
            if(i>=arr.size()-3){
                darr.add(arr.get(i));
            }else if(i%3==0){
                aarr.add(arr.get(i));
            }else if(i%3==1){
                barr.add(arr.get(i));
            }else{
                carr.add(arr.get(i));
            }
        }
        looker("a",aarr,hm);
        looker("b",barr,hm);
        looker("c",carr,hm);
        looker("d",darr,hm);
    }

    public static void looker(String name,TreeSet<Integer> ts,HashMap<Integer,String> hm){
        System.out.println(name+"的牌是: ");
        for(Integer key:ts){
            String poker=hm.get(key);
            System.out.println(poker+" ");
        }
    }
}

File类

是文件和目录路径名的抽象表示
File(String pathname);//将字符串转变为抽象路径名
File(String parent,String child);//从父路径名字符串和子路径名字符串创建新的File实例
File(File parent,String child);//从父抽象路径名和子路径名字符串创建新的File实例
相关应用:
//仅仅能够显示,并不要求该文件存在
File f1=new File("E:\\itcast\\java.txt");
        System.out.println(f1);
//显示内容与上述一致
File f1=new File("E:\\itcast","java.txt");
        System.out.println(f1);
//显示内容与上述一致
File f1=new File("E:\\itcast");
        File f2=new File(f1,"java.txt");
        System.out.println(f2);
posted @ 2022-07-22 21:23  yesyes1  阅读(18)  评论(0编辑  收藏  举报