java - 使用 Stream 将逗号分隔的字符串转换为数组

标签 java arrays string

如何使用 Java 8 Stream 将 Java 逗号分隔为对象数组?

 public static void main(String[] args){
    String INPUT = 
        "00:00:01,400-234-090\n" +
            "00:00:01,701-080-080\n" +
            "01:05:00,600-234-090";
    System.out.println(new Solution().solution(INPUT));

  }

最佳答案

您可以使用Java Stream执行如下:

Arrays.stream(csvString.split("\r?\n"))
                .map(x -> x.split(","))
                .map(Arrays::asList)
                .map(PhoneCall::new) //Stream<PhoneCall>
                .collect(Collectors.groupingBy(x -> x.phoneNumber)) //Map<String, List<PhoneCall>>
                .values() 
                .stream()



    private static class PhoneCall {
        final String phoneNumber;
        final int hours;
        final int minutes;
        final int seconds;


        PhoneCall(List<String> values) {
            phoneNumber = values.get(1);
            String[] durationArray = values.get(0).split(":");
            hours = Integer.valueOf(durationArray[0]);
            minutes = Integer.valueOf(durationArray[1]);
            seconds = Integer.valueOf(durationArray[2]);
        }
    }

关于java - 使用 Stream 将逗号分隔的字符串转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55822123/

相关文章:

java - Opengl 变换反馈在 Android 上正确制作

java - webdriver 是类还是接口(interface)?

java - JAX-WS、Axis2 和 CXF 的区别

python - 新建一个数组

css - 字符串搜索替换 AS3

java - 使用堆栈来反转字符串?

java - 有没有办法搜索和访问当前正在运行的线程?

arrays - 指针数组

php - jquery 构建数组不起作用

ios - 如何在 Swift 中检查字符串以(前缀)开头或以(后缀)结尾