51,407
社区成员
发帖
与我相关
我的任务
分享
//JDK 1.8及以后版本适用.
/*
data.bin文件内容格式:
123 你好,这是数据
456 hello,world.
jdl jfldjlfd
djf jdlfjaljf
123 fdjslfj;as
125 fdjlfjds
123 987746
*/
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.Path;
import java.nio.charset.Charset;
import java.util.stream.Stream;
import java.util.function.Predicate;
import java.io.IOException;
public class Test{
public static void main(String[] args){
Path path = Paths.get("data.bin");
String id = "123";
process(path,id);
}
private static void process(Path path,String id){
try(Stream<String> contents = Files.lines(path,Charset.defaultCharset())){
MyPredicate predicate = new MyPredicate(id);
Stream<String> results = contents.filter(predicate);
Object[] resultLines = results.toArray();
for(Object line : resultLines){
System.out.println(line);
}
}catch(IOException e){
e.printStackTrace();
System.exit(1);
}
}
}
class MyPredicate implements Predicate<String>{
public MyPredicate(String id){
idRegex = "^\\s*?\\Q" + id +"\\E\\s+.*$";
}
@Override
public boolean test(String content){
return content.matches(idRegex);
}
private String idRegex;
}
[/quote]
十分感谢这么晚还回帖子,想办法,我用的是jdk1.7的版本,觉得别人给我出的题目的是想用哈希,数组,集合,之类的知识,建立索引文件的东西,主要是考一下思路的问题。现在自己没有什么可行的思路。
//JDK 1.8及以后版本适用.
/*
data.bin文件内容格式:
123 你好,这是数据
456 hello,world.
jdl jfldjlfd
djf jdlfjaljf
123 fdjslfj;as
125 fdjlfjds
123 987746
*/
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.Path;
import java.nio.charset.Charset;
import java.util.stream.Stream;
import java.util.function.Predicate;
import java.io.IOException;
public class Test{
public static void main(String[] args){
Path path = Paths.get("data.bin");
String id = "123";
process(path,id);
}
private static void process(Path path,String id){
try(Stream<String> contents = Files.lines(path,Charset.defaultCharset())){
MyPredicate predicate = new MyPredicate(id);
Stream<String> results = contents.filter(predicate);
Object[] resultLines = results.toArray();
for(Object line : resultLines){
System.out.println(line);
}
}catch(IOException e){
e.printStackTrace();
System.exit(1);
}
}
}
class MyPredicate implements Predicate<String>{
public MyPredicate(String id){
idRegex = "^\\s*?\\Q" + id +"\\E\\s+.*$";
}
@Override
public boolean test(String content){
return content.matches(idRegex);
}
private String idRegex;
}

