Java等效的Perl函数,只打印唯一的行?
试图找到这行Perl代码的java等价物:Java等效的Perl函数,只打印唯一的行?,java,Java,试图找到这行Perl代码的java等价物: perl -ne 'print unless $a{$_}++' 做了一些环顾四周,但没有结果! 干杯 Ger因为这是一个琐碎的问题,而不是一个真正的生产问题,所以我认为Java8是允许的 import java.io.BufferedReader; import java.io.InputStreamReader; public class PrintUnique { public static void main(String[] ar
perl -ne 'print unless $a{$_}++'
做了一些环顾四周,但没有结果!
干杯
Ger因为这是一个琐碎的问题,而不是一个真正的生产问题,所以我认为Java8是允许的
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class PrintUnique {
public static void main(String[] args) {
new BufferedReader(new InputStreamReader(System.in)).lines().distinct()
.forEach(System.out::println);
}
}
Java 6解决方案如下所示:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Set;
public class PrintUnique {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Set<String> lines = new HashSet<String>();
String line;
while((line = br.readLine()) != null) {
if(lines.add(line))
System.out.println(line);
}
}
}
请看地图。只有在第一次调用它时,它才会返回null。当然,它在内存中存储唯一的行,但重复的行只会被跳过。Perl解决方案只会将不同的行读取到内存中,但这可能没有那么大的区别。这实际上是一个生产问题,不管是措辞不当的问题。需要java 6中的解决方案…添加了java 6解决方案