Java相当于Perl函数只打印唯一的行?

时间:2015-05-15 08:18:24

标签: java

试图找到这行Perl代码的java等价物:

perl -ne 'print unless $a{$_}++'

有些人环顾四周但无济于事! 干杯, GER

1 个答案:

答案 0 :(得分:4)

由于它是一个类似琐事的问题,而不是真正的生产问题,我认为Java 8是允许的。

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);
        }
    }
}