【Day07-练习】

2.1 定义一个方法,可以接收任意个字符串,并放入一个集合中返回

public class Test1 {
    public static void main(String[] args) {
        ArrayList<String> list = strsList("张无忌", "周芷若", "赵敏", "张强", "张三丰");
        System.out.println(list);
    }

    public static ArrayList<String> strsList(String...strings){
        ArrayList<String> list = new ArrayList<>();
        for (String string : strings) {
            list.add(string);
        }
        return list;
    }
}

2.2 请使用HashMap集合保存街道两旁的店铺名称;使用门牌号作为键,店铺名作为值,然后使用三种方式遍历输出;

信息如下:

101,阿三面馆

102,阿四粥馆

103,阿五米馆

104,阿六快递

要求:

1:键是整数,值是字符串;

2:输出的信息使用"--"链接

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

        map.put(101,"阿三面馆");
        map.put(102,"阿四粥馆");
        map.put(103,"阿五米馆");
        map.put(104,"阿六快递");
        System.out.println("方式1遍历   键找值");
        Set<Integer> keys = map.keySet();
        for (Integer key : keys) {
            String value = map.get(key);
            System.out.println(key + "--" + value);
        }
        System.out.println("---------------");
        System.out.println("方式2遍历   键值对对象");
        Set<Map.Entry<Integer, String>> entries = map.entrySet();
        for (Map.Entry<Integer, String> entry : entries) {
            System.out.println(entry.getKey() + "--" + entry.getValue());
        }
        System.out.println("---------------");
        System.out.println("方式3遍历   接口中默认的forEach方法配合lambda");
        map.forEach((key, value) -> System.out.println(key + "--" + value));
    }
}

 

2.3 请使用TreeMap集合保存劳模信息,要求以劳模对象为键,家庭住址为值,并按照劳模的年龄从大到小排序后输出;

信息如下:

18岁的张三,北京

20岁的李四,上海

35岁的王五,天津

21岁的赵六,北京

19岁的田七,上海

要求:

1:劳模类中有姓名和年龄两个属性;

2:添加上述信息后,使用代码删除张三的信息

3:添加上述信息后,使用代码修改李四的家庭住址为郑州

4:使用至少两种方式遍历集合中的信息并输出;

public class Test3 {
    public static void main(String[] args) {
        Map<Worker, String> map = new TreeMap<>(((o1, o2) -> o2.getAge() - o1.getAge()));
        map.put(new Worker("张三", 18), "北京");
        map.put(new Worker("李四", 20), "上海");
        map.put(new Worker("王五", 35), "天津");
        map.put(new Worker("赵六", 21), "北京");
        map.put(new Worker("田七", 19), "上海");

        //删除张三的信息
        Set<Worker> workers = map.keySet();
        for (Worker worker : workers) {
            if (worker.getName().equals("张三")) {
                map.remove(worker);
            }
        }
        //修改李四的家庭住址为郑州
        map.forEach(((worker, s) -> {
            if (worker.getName().equals("李四")) {
                map.put(worker, "郑州");
            }
        }));

        System.out.println("方式1遍历   键找值");
        Set<Worker> keys = map.keySet();
        for (Worker key : keys) {
            String value = map.get(key);
            System.out.println(key + "--" + value);
        }
        System.out.println("---------------");
        System.out.println("方式2遍历   键值对对象");
        Set<Map.Entry<Worker, String>> entries = map.entrySet();
        for (Map.Entry<Worker, String> entry : entries) {
            System.out.println(entry.getKey() + "--" + entry.getValue());
        }
        System.out.println("---------------");
        System.out.println("方式3遍历   接口中默认的forEach方法配合lambda");
        map.forEach((key, value) -> System.out.println(key + "--" + value));
    }
}

class Worker{
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Worker() {
    }

    public Worker(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return age + "岁的" + name;
    }
}

2.4  现有三种产品,每种品牌对应几种商品,要求选择合适的集合来存储,并按照上述格式打印在控制台

电脑=[华为电脑, 苹果电脑, oppo电脑, vivo电脑, 三星电脑]

手机=[华为手机, 苹果手机, oppo手机, vivo手机, 三星手机]

耳机=[华为耳机, 苹果耳机, 华强北耳机, oppo耳机, vivo耳机, 三星耳机]

public class Test4 {
    public static void main(String[] args) {
        HashMap<String, List<String>> map = new HashMap<String, List<String>>();
        List<String> list1 = new ArrayList<String>();
        Collections.addAll(list1,"华为电脑", "OPPO电脑", "苹果电脑", "VIVO电脑", "三星电脑");
        map.put("电脑", list1);

        List<String> list2 = new ArrayList<String>();
        Collections.addAll(list2,"华为手机", "OPPO手机", "苹果手机", "VIVO手机", "三星手机");
        map.put("手机", list2);

        map.put("耳机", List.of("华为耳机", "OPPO耳机", "苹果耳机", "VIVO耳机", "三星耳机"));

        Set<Map.Entry<String, List<String>>> entries = map.entrySet();
        for (Map.Entry<String, List<String>> entry : entries) {
            System.out.println(entry.getKey() + "=" + entry.getValue());
        }
    }
}

2.5 定义一个ArrayList集合,它包含两个元素,每一个元素都是HashMap类型的。

每一个HashMap集合的键是String类型的(丈夫的姓名),值都是对象类型的(妻子的对象)

给出如下的字符串数据,请用代码实现需求。

第一个HashMap集合的元素:

  • 孙策 大乔(姓名:大乔 年龄:18)

  • 周瑜 小乔(姓名:小乔 年龄:17)

第二个HashMap集合的元素:

  • 郭靖 黄蓉(姓名:黄蓉 年龄:40)

  • 杨过 小龙女(姓名:小龙女 年龄:20)

    public class Test5 {
        public static void main(String[] args) {
            ArrayList<HashMap> maps = new ArrayList<>();
            HashMap<String, Wife> firstMap = new HashMap<>();
            firstMap.put("孙策", new Wife("大乔", 18));
            firstMap.put("周瑜", new Wife("小乔", 17));
            maps.add(firstMap);
            HashMap<String, Wife> secondMap = new HashMap<>();
            secondMap.put("郭靖", new Wife("黄蓉", 40));
            secondMap.put("杨过", new Wife("小龙女", 20));
            maps.add(secondMap);
            for (HashMap map : maps) {
                Set<Map.Entry<String, List<String>>> entries = map.entrySet();
                for (Map.Entry<String, List<String>> entry : entries) {
                    System.out.println(entry.getKey() + entry.getValue());
                }
            }
        }
    }
    class Wife{
        private String name;
        private int age;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public Wife(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        @Override
        public String toString() {
            return "Wife{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    '}';
        }
    
        public Wife() {
        }
    }
    

    2.6  定义一个集合中有如下7个元素黄药师,冯蘅,郭靖,黄蓉,郭芙,郭襄,郭破虏,使用stream完成下面需求

    1)将以郭字开头的元素存入新数组,并打印

    2)取出前2个元素并在控制台打印输出

    3)取出后2个元素并在控制台打印输出

    4)统计名字三个字的人数

    public class Test6 {
        public static void main(String[] args) {
            List<String> list = new ArrayList<>();
            Collections.addAll(list,"黄药师", "冯蘅", "郭靖", "黄蓉", "郭芙", "郭襄", "郭破虏");
            System.out.println("以‘郭’字开头的名字有:");
            Object[] array = list.stream()
                    .filter(new Predicate<String>() {
                        @Override
                        public boolean test(String s) {
                            return s.startsWith("郭");
                        }
                    })
                    .toArray();
            System.out.println(Arrays.toString(array));
            System.out.println("================");
            System.out.println("前两个名字是:");
            list.stream()
                    .limit(2)
                    .forEach(System.out::println);
            System.out.println("后两个名字是:");
            System.out.println("================");
            list.stream()
                    .skip(list.size() - 2)
                    .limit(2)
                    .forEach(System.out::println);
    
            System.out.println("================");
            long count = list.stream()
                    .filter(e -> e.length() == 3)
                    .count();
            System.out.println("名字为三个字的人数是:" + count);
        }
    }
    
  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值