package com.company;

import sun.java2d.loops.FontInfo;

import java.awt.*;
import java.awt.List;
import java.util.*;

public class Main {

    public static void main(String[] args) {
        // write your code here

        //  集合
        //ArrayList<集合中元素类型>集合名 = new ArrayList<集合中元素类型>();
        ArrayList<String> list = new ArrayList<String>();
        //添加元素
//        list.add("社会我刁哥");
//        list.add("社会我刁哥");
//        list.add("发哥");
//        list.add("社会我刁哥");
//        list.add("社会我大刁哥");
//
//        // System.out.println(list);如果想要访问集合中的元素还是要用for循环来进行使用
//
//        //插入元素
//        //add方法 - 当参数1添加下标时,完成的是插入功能,否则将元素添加到集合的最尾端
//        list.add(1, "小朋友");
//        System.out.println(list);

        //修改元素
        //参数1 - 下标
        //参数2 - 要修改的值
//        list.set(1, "阿肥");
//        System.out.println(list);

//        //获取元素
//        //
//        String str = list.get(2);
//        System.out.println(str);
//
//        //删除元素
//        list.remove(1);
//        System.out.println(list);
//
//        //集合的元素个数
//        int size = list.size();
//        System.out.println(size);

        /************************以上是使用频率较高的方法*********************/

        /************************以下是使用频率不高的方法*********************/

        //根据内容得到位置(下标) - 如果有相同的元素输出第一个元素的下标
//        int index = list.indexOf("社会我刁哥");
//        System.out.println(index);
//        //如果有相同的元素输出最后一个元素的下标
//        int indxL = list.lastIndexOf("社会我刁哥");
//        System.out.println(indxL);
//        //子集
//        //subList(下标开始的位置, 下标结束的位置)
//        //将符合条件的区间(子集)返回到subL中
//        //注意: 取得的子集包含"开始的位置", 但不包含"结束的位置"
        List<String> subL = list.subList(1,3);
        System.out.println(subL);
//
//
//        //移除元素 - 通过内容
//        //当删除成功,返回true
//        //当删除失败,返回false(如不存在)
//        boolean ret = list.remove("社会我刁哥");
//        System.out.println(list);
//        System.out.println(ret);
//
//        //删除所有 "社会我刁哥"
//        while (list.remove("社会我刁哥")){
//
//        }
//        System.out.println(list);

        //判断是否包含某个元素
//        boolean rete = list.contains("社会我刁哥");
//        System.out.println(rete);
//        //判断集合是否为空
//        boolean ret = list.isEmpty();
//        System.out.println(ret);


        /*********************************练习********************************/
        /*********************************练习********************************/
        //练习:定义一个集合,用户从键盘输入一个数字n
        //将集合赋值1~n
        //并打印1~n中所有能被7整除的数

        //方式一  集合注意事项:
        // 1, 使用集合前必须要创建对象!!!
        // 2, 集合中元素类型需要是复杂元素类型(类)
        //若要使用简单的数据类型(in, float等等),需要使用对应的包装类
        // 一般情况下一个类型的包装类就是这个类型的首字母大写
//        ArrayList<Integer> list1 = new ArrayList<Integer>();
//        Scanner sc = new Scanner(System.in);
//        int n = sc.nextInt();
//        for (int i = 1; i <= n; i++) {
//            list1.add(i);
//            if (i % 7 == 0) {
//                System.out.println(i);
//            }
//        }
//        System.out.println(list1);
//
//        //方式二
//        ArrayList<String> list = new ArrayList<String>();
//        Scanner s = new Scanner(System.in);
//        int n1 = sc.nextInt();
//        for (int i = 1; i <= n; i++) {
//            list.add(i + "");//这样就可以字符串转成int类型
//            if (i % 7 == 0) {
//                System.out.println(i);
//            }
//        }
//        System.out.println(list);
//


        //map
        //map是以字符串为下标的"无序数组"
        //key - value  key是下标  value是值
        HashMap<String, String> map = new HashMap<String, String>();

        //添加元素(添加键值对)
        map.put("name", "发哥");
        map.put("age", "24");
        map.put("levle", "10");
        System.out.println(map);

        //修改
        //put方法 - 若key值不存在就添加
        //          若key值存在就修改
//        map.put("levle", "12");
//        System.out.println(map);

        //获取值 - 注意: 根据key而不是0,1等下标
//        String str = map.get("name");
//        System.out.println(str);

        //删除
//        map.remove("name");
//        System.out.println(str);

        //判断是否包含

//        boolean ret = map.containsKey("name");
//        boolean ret1 = map.containsValue("发哥");
//        System.out.println(ret);
//        System.out.println(ret1);


        //练习,删除map里所有的value为10的元素

        for (String key : map.keySet()) {
            String str = map.get(key);
            if (str.equals("10")) {
                map.remove(key);
            }
//            System.out.println(key + " " + str);
        System.out.println(map);
        }

    }
}