为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Java 8中使用收集器和流自动增加哈希图的键

如何在Java 8中使用收集器和流自动增加哈希图的键

阿波罗的战车 2021-04-13 17:18:56
我是Java 8Streams和Collectors类的新手 。我正在读取一个文件,其内容需要保存在一个LinkedHashMap<Integer, String>位置,该<keys>位置是文件的行号,并且它<values>是每一行的内容。在这里,我想使用这个Stream概念,但是我不能使用Collectors.toMap来自动增加<keys>需要保存在LinnkedHashMap对象中的。取而代之的是,我得到了例外。以下是我正在尝试的代码:List<String> list = new ArrayList<>();Integer count = 0;try (BufferedReader br = Files.newBufferedReader( Paths.get( fileName ) )) {    // br returns as stream and convert it into a List    list = br.lines().collect( Collectors.toList() );}catch ( IOException e ) {    e.printStackTrace();}list.forEach( System.out::println );Map<Integer, String> fileNumWithContentMapper = list.stream()        .collect( Collectors.toMap( n->n+1,s1->s1));
查看完整描述

3 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

试试这个代码:


public static void main(String[] args)  {

    List<String> list = Arrays.asList("A", "B", "C");

    list.forEach( System.out::println );


    AtomicInteger i = new AtomicInteger(0);

    Map<Integer, String> fileNumWithContentMapper = list.stream()

                .collect( Collectors.toMap( n->i.incrementAndGet(),s1->s1));


    System.out.println(fileNumWithContentMapper);

}


查看完整回答
反对 回复 2021-04-28
  • 3 回答
  • 0 关注
  • 151 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信