StJavaDay06(集合)

集合体(二)

Map集合

Map集合的基本功能【应用】
package MapGroup;

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

public class MapDemo1 {
    public static void main(String[] args) {
        //创建集合对象
        Map<String, String> map = new HashMap<String, String>();

        //V put(K key, V value) 将指定的值与该映射中的指定键相关联
        map.put("01", "shady");
        map.put("02", "tt");
        map.put("03", "at");
        System.out.println(map);

        //V remove(Object key) 根据键删除键值对元素
        System.out.println("-------------");
        map.remove("01");
        System.out.println(map);
        System.out.println("-------------");
        // void clear() 移除所有的键值对元素
        //map.clear();
        //System.out.println(map);
        System.out.println("-------------");
        //boolean containsKey(Object key)
        System.out.println(map.containsKey("02"));
        System.out.println(map.containsKey("01"));

        //boolean containsValue(Object value) 判断集合是否包含指定的值
        System.out.println("-------------");
        System.out.println(map.containsValue("shady"));
        System.out.println(map.containsValue("tt"));

        // boolean isEmpty() 判断集合是否为空
        System.out.println("-------------");
        System.out.println(map.isEmpty());

        //int size() 集合的长度,也就是集合中键值对的个数
        System.out.println("-------------");
        System.out.println(map.size());
    }
}


Map集合的获取功能【应用】
//V get(Object key) 根据键获取值
        System.out.println("-------------");
        System.out.println(map.get("02"));
        //Set keySet() 获取所有键的集合
        System.out.println("-------------");
        Set<String> keySet = map.keySet();
        for (String key : keySet) {
            System.out.println(key);
        }

        //Collection values() 获取所有值的集合
        Collection<String> key1=map.values();
        for (String ww:key1)
        {
            System.out.println(ww);
        }

Map集合的遍历(方式2)【应用】
Set<Map.Entry<K,V>> entrySet():获取所有键值对对象的集合
遍历键值对对象的集合,得到每一个键值对对象
package MapGroup;

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

public class MapDemo2 {

    public static void main(String[] args) {
        //创建对象
        Map<String,String> map=new HashMap<String,String>();

        //增加元素

        map.put("杨会龙","李倩");
        map.put("刘志鹏","高安婷");
        map.put("shady","shady1");
        map.put("sb","bh");

        //获取所有键值对对象集合
        Set<Map.Entry<String, String>> entry = map.entrySet();

        for (Map.Entry<String,String> cc:entry){
            String key=cc.getKey();
            String value=cc.getValue();
            System.out.println(key+","+value);
        }
    }
}

Map集合的案例【应用】
HashMap

初始值 16
数组+链表
可以保存null
key和value都可以为null

HashMap集合练习之键是String值是Student
统计字符串中每个字符出现的次数
案例需求

键盘录入一个字符串,要求统计字符串中每个字符串出现的次数。
举例:键盘录入“aababcabcdabcde” 在控制台输出:“a(5)b(4)c(3)d(2)e(1)”

public class HashMapDemo {

    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String line=sc.nextLine();

        TreeMap<Character,Integer> s=new TreeMap<Character,Integer>();
        //遍历字符串,获取每一个字符
        for (int i=0;i<line.length();i++)
        {
            char key=line.charAt(i);
            //拿得到的每一个字符作为键到HashMap集合中去找对应的值,看其返回值
            Integer value=s.get(key);
            if(value==null)
            {
                s.put(key,1);
            }
            else
            {
                value++;
                s.put(key,value);
            }
        }
            StringBuilder sb=new StringBuilder();
        Set<Character> keySet=s.keySet();
        for (Character key:keySet)
        {
            Integer value=s.get(key);
            sb.append(key).append("(").append(value).append(")");
        }

        String result = sb.toString();

        System.out.println(result);

    }
}

Collections概述和使用【应用】

Collections类常用方法

public static void sort(List list) 将指定的列表按升序排序

public static void reverse(List<?> list) 反转指定列表中元素的顺序

public static void shuffle(List<?> list) 使用默认的随机源随机排列指定的列表
ArrayList集合存储学生并排序【应用】
案例需求
ArrayList存储学生对象,使用Collections对ArrayList进行排序
要求:按照年龄从小到大排序,年龄相同时,按照姓名的字母顺序排序
package MapGroup;

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

public class CollectionsDemo {
    public static void main(String[] args) {

        //创建ArrayList集合对象
        ArrayList<Student> s = new ArrayList<>();
        //创建学生类对象
        Student s1 = new Student("linqingxia", 30);
        Student s2 = new Student("zhangmanyu", 35);
        Student s3 = new Student("wangzuxian", 33);
        Student s4 = new Student("liuyan", 33);

        //把学生添加到集合
        s.add(s1);
        s.add(s2);
        s.add(s3);
        s.add(s4);

        Collections.sort(s, 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 ss:s){
            System.out.println(ss.getName()+","+ss.getAge());
        }
    }
}

模拟斗地主案例-普通版本【应用】
package MapGroup;

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

public class PokerDemo {
    public static void main(String[] args) {

        ArrayList<String> list = new ArrayList<String>();
        //往牌盒里面装牌
        /* ♦2,♦3,♦4...♦K,♦A ♣2,... ♥2,... ♠2,... 小王,大王 */
        //定义花色数组
        String[] colors = {"♦", "♣", "♥", "♠"};
        //定义点数数组
        String[] numbers = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};
        for (String color : colors) {
            for (String number : numbers) {
                list.add(color + number);
//                System.out.println(color+number);
            }
        }
        list.add("小王");
        list.add("大王");
        //洗牌
        Collections.shuffle(list);
        //发牌,也就是遍历集合,给三个玩家发牌
        ArrayList<String> lqxArray = new ArrayList<String>();
        ArrayList<String> lyArray = new ArrayList<String>();
        ArrayList<String> fqyArray = new ArrayList<String>();
        ArrayList<String> dpArray = new ArrayList<String>();

        for (int i = 0; i < list.size(); i++) {
            String poker = list.get(i);
            if (i >= list.size() - 3) {
                dpArray.add(poker);
            } else if (i % 3 == 0) {
                lqxArray.add(poker);
            } else if (i % 3 == 1) {
                lyArray.add(poker);
            } else if (i % 3 == 2) {
                fqyArray.add(poker);
            }
        }
        //看牌,也就是三个玩家分别遍历自己的牌

        lookPoker("林青霞", lqxArray);
        lookPoker("柳岩", lyArray);
        lookPoker("风清扬", fqyArray);
        lookPoker("底牌", dpArray);
    }
    public  static void lookPoker(String name, ArrayList<String> array) {
        System.out.print(name + "的牌是:");
        for (String poker : array)
        {
            System.out.print(poker + " ");
        }
        System.out.println();
    }
}

File类

File类概述和构造方法【应用】

File类的构造方法

  1. File(String pathname) 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例
  2. File(String parent, String child) 从父路径名字符串和子路径名字符串创建新的 File实例
  3. File(File parent, String child) 从父抽象路径名和子路径名字符串创建新的 File实例

File类创建功能【应用】

public boolean createNewFile()
当具有该名称的文件不存在时,创建一个由该抽象路径名命名的新空
文件


/*
* public boolean createNewFile() 当具有该名称的文件不存在时,创建一个由该抽象路径名命名的新空文件
* public boolean mkdir() 创建由此抽象路径名命名的目录
* public boolean mkdirs() 创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录
* 
*/
//需求1:我要在E:\\itcast目录下创建一个文件java.txt
File f1 = new File("E:\\itcast\\java.txt"); 
System.out.println(f1.createNewFile());

//需求2:我要在E:\\itcast目录下创建一个目录JavaSE

File f2 = new File("E:\\itcast\\JavaSE"); 
System.out.println(f2.mkdir());

//需求3:我要在E:\\itcast目录下创建一个多级目录JavaWEB\\HTML
File f3 = new File("E:\\itcast\\JavaWEB\\HTML");
System.out.println(f3.mkdirs());
//需求4:我要在E:\\itcast目录下创建一个文件javase.txt
 File f4 = new File("E:\\itcast\\javase.txt");
  // System.out.println(f4.mkdir()); 
  System.out.println(f4.createNewFile());

File类判断和获取功能【应用】

判断功能
方法名说明
public boolean isDirectory()测试此抽象路径名表示的File是否为目录
public boolean isFile()测试此抽象路径名表示的File是否为文件
public boolean exists()测试此抽象路径名表示的File是否存在
获取功能
方法名说明
public String getAbsolutePath()返回此抽象路径名的绝对路径名字符串
public String getPath()将此抽象路径名转换为路径名字符串
public String getName()返回由此抽象路径名表示的文件或目录的名称
public String[] list()返回此抽象路径名表示的目录中的文件和目录的名称字符串数组
public File[] listFiles()返回此抽象路径名表示的目录中的文件和目录的File对象数组
File类删除功能【应用】
方法名说明
public boolean delete()删除由此抽象路径名表示的文件或目录
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值