如何在Stream.collect中为HashMap使用双冒号? - java

我想通过将第一列用作键,将第二列用作值,并忽略第三列,将csv文件读取到哈希图中。

我写了下面的代码,它可以工作。我想知道如何用双冒号“ ::”重写语法。

我检查了API文档,但是大多数示例都使用List而不是Map。

我使用了一个字符串来模拟一个csv文件:“ A,1,!”,“ B,2,@”,“ C,3,#”,“ D,4,$”,“ E,5,%”

Map<String,String> maps = Stream.of("A,1,!","B,2,@","C,3,#","D,4,$","E,5,%")
      .collect(() -> new HashMap<String,String>(),
               (map, line) -> {String x[] = line.split(","); map.put(x[0],x[1]);},
               (map1, map2) -> map1.putAll(map2));
System.out.println(maps);

谢谢,
伊恩

参考方案

我个人会这样做:

Map<String, String> maps = Stream.of("A,1,!", "B,2,@", "C,3,#", "D,4,$", "E,5,%").
        map(line -> line.split(",")).
        collect(HashMap::new, (map, line) -> map.put(line[0], line[1]), HashMap::putAll);

即将逻辑分离为不同的流转换操作。在map中执行collect会模糊代码的意图。

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…

Java-如何将此字符串转换为日期? - java

我从服务器收到此消息,我不明白T和Z的含义,2012-08-24T09:59:59Z将此字符串转换为Date对象的正确SimpleDateFormat模式是什么? java大神给出的解决方案 这是ISO 8601标准。您可以使用SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM…

JAVA 8具有任何匹配属性的对象的过滤器列表 - java

我的要求是通过匹配任何属性的字符串来过滤对象列表。例如,假设Contact类具有三个属性:街道,城市,电话。我知道java流过滤器是如何工作的,在这里我必须将输入字符串与每个属性进行比较,如下所示:contactList.stream().filter(contact -> contact.getStreet().equals("dubai&…

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

Java-固定大小的列表与指定初始容量的列表之间的差异 - java

我在理解这一点上遇到了问题。当我们做 List<Integer> list = Arrays.asList(array); 我们不能在该列表上使用添加,删除之类的方法。我知道Arrays.asList()返回固定大小的列表。我不明白的是,如果我们创建一个具有指定初始容量的列表,例如List<Integer> list2 = new A…