Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java等效的Perl函数,只打印唯一的行?_Java - Fatal编程技术网

Java等效的Perl函数,只打印唯一的行?

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代码的java等价物:

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解决方案