猿问

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

我是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));


阿波罗的战车
浏览 157回答 3
3回答

子衿沉夜

试试这个代码:public static void main(String[] args)&nbsp; {&nbsp; &nbsp; List<String> list = Arrays.asList("A", "B", "C");&nbsp; &nbsp; list.forEach( System.out::println );&nbsp; &nbsp; AtomicInteger i = new AtomicInteger(0);&nbsp; &nbsp; Map<Integer, String> fileNumWithContentMapper = list.stream()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .collect( Collectors.toMap( n->i.incrementAndGet(),s1->s1));&nbsp; &nbsp; System.out.println(fileNumWithContentMapper);}
随时随地看视频慕课网APP

相关分类

Java
我要回答