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

public class MovieDirectors {
    public static void main(String[] args) {
        String ds = "导演:吴京,导演:贾玲,导演:饺子,导演:郭帆,导演:陈思诚,导演:安东尼·罗素/乔·罗素,导演:林超贤,导演:陈思诚,导演:周星驰,导演:陈凯歌/张一白/管虎/薛晓路/徐峥/宁浩/文牧野,导演:管虎,导演:文牧野,导演:刘伟强,导演:宁浩/徐峥/陈思诚/闫非/彭大魔/邓超/俞白眉,导演:F·加里·格雷,导演:闫非/彭大魔,导演:许诚毅,导演:温子仁,导演:安东尼·罗素/乔·罗素,导演:许诚毅,导演:宋阳/张吃鱼,导演:宁浩,导演:温子仁,导演:迈克尔·贝,导演:田羽生,导演:鲁本·弗雷斯彻,导演:唐季礼,导演:韩寒,导演:詹姆斯·卡梅隆,导演:陈国辉,导演:J·A·巴亚纳,导演:乌尔善,导演:徐克,导演:徐峥,导演:程腾/李炜,导演:曾国祥,导演:迈克尔·贝,导演:拜伦·霍华德/瑞奇·摩尔/杰拉德·布什,导演:邓肯·琼斯,导演:乔斯·韦登,导演:闫非/彭大魔,导演:大卫·雷奇,导演:韩延,导演:冯小刚,导演:科林·特雷沃罗,导演:乔·沃茨,导演:史蒂文·斯皮尔伯格,导演:林诣彬,导演:刘若英,导演:黄渤";

        // @1 打印具有多个导演的影片名
        String[] movies = ds.split(",");
        for (String movie : movies) {
            String[] directors = movie.split("导演:");
            if (directors.length > 2) {
                System.out.println(directors[1]);
            }
        }

        // @2 这50个影片,一共出现了多少个导演名
        Set<String> directorSet = new HashSet<>();
        for (String movie : movies) {
            String[] directors = movie.split("导演:");
            for (int i = 1; i < directors.length; i++) {
                String[] singleDirectors = directors[i].split("/");
                for (String director : singleDirectors) {
                    directorSet.add(director);
                }
            }
        }
        System.out.println("一共出现了" + directorSet.size() + "个导演名");

        // @3 有哪些导演参演了多个电影,打印导演名和电影数量
        Map<String, Integer> directorCountMap = new HashMap<>();
        for (String movie : movies) {
            String[] directors = movie.split("导演:");
            for (int i = 1; i < directors.length; i++) {
                String[] singleDirectors = directors[i].split("/");
                for (String director : singleDirectors) {
                    directorCountMap.put(director, directorCountMap.getOrDefault(director, 0) + 1);
                }
            }
        }
        for (Map.Entry<String, Integer> entry : directorCountMap.entrySet()) {
            if (entry.getValue() > 1) {
                System.out.println("导演名:" + entry.getKey() + ",电影数量:" + entry.getValue());
            }
        }
    }
}

代码解析:

  1. 首先,将字符串ds使用逗号分隔成电影字符串数组movies。
  2. 使用循环遍历movies数组,对每个电影字符串进行处理。
  3. 对于每个电影字符串,使用"导演:"进行分割,得到导演数组directors。
  4. 如果导演数组directors的长度大于2,表示该电影有多个导演,打印出该电影的导演名。
  5. 创建一个HashSet集合directorSet,用于存储所有出现过的导演名。
  6. 再次循环遍历movies数组,对每个电影字符串进行处理。
  7. 对于每个电影字符串,使用"导演:"进行分割,得到导演数组directors。
  8. 对于导演数组directors中的每个元素,使用斜杠/进行分割,得到单个导演名的数组singleDirectors。
  9. 遍历单个导演名的数组singleDirectors,将每个导演名添加到directorSet集合中。
  10. 输出directorSet集合的大小,即为这50个影片一共出现了多少个导演名。
  11. 创建一个HashMap集合directorCountMap,用于存储每个导演名对应的电影数量。
  12. 再次循环遍历movies数组,对每个电影字符串进行处理。
  13. 对于每个电影字符串,使用"导演:"进行分割,得到导演数组directors。
  14. 对于导演数组directors中的每个元素,使用斜杠/进行分割,得到单个导演名的数组singleDirectors。
  15. 遍历单个导演名的数组singleDirectors,将每个导演名作为key存入directorCountMap中,并将对应的电影数量加1。
  16. 最后,遍历directorCountMap集合的entrySet,找出电影数量大于1的导演名,并打印出导演名和电影数量。
Java代码:分析电影导演信息,统计多导演影片、导演数量和导演参演电影数

原文地址: https://www.cveoy.top/t/topic/qbZ1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录