nohup java -jar -Xmx1024M china-map.jar > log.txt & 在ssh退出后, 也不会终止进程;
Object[] a = IntStream.range(0,100).
map(i->String.valueOf(i).hashCode()).
mapToObj(i->String.valueOf(i).getBytes())
.toArray();
c.forEach(System.out::println);
接口中的default方法:
public interface NewCharacter {
public void test1();
public default void test2(){
System.out.println("我是新特性1");
}
}
Lambda表达式:
Collections.sort(c,(t1,t2)->t1.compareTo(t1+t2));
Function接口:
@FunctionalInterface // 只能定义一个抽象方法; 通过Lambda去实现这个抽象方法; 相当于 func (String y) {...}
public interface MyLamda {
public void test1(String y);
}
MyLamda m = y -> System.out.println("ss"+y);
Function<Integer,Object> f = y -> y+1;
Supplier 供应商, 就相当于写好的一个 匿名func()
@FunctionalInterface
public interface Supplier<T> {
T get();
}
Optional<String> o = Optional.of("aa");
o.orElseGet(()->"none");
public T orElseGet(Supplier<? extends T> other) {
return value != null ? value : other.get();
}
等价于:
public T orElseGet(Function<T,T> func) {
return value != null ? value : func.apply();
}
stream
task是一个类, tasks 是list<task>;
final double totalPoints = tasks
.stream()
.parallel()
.map( task -> task.getPoints() ) // or map( Task::getPoints )
.reduce( 0, Integer::sum );
final Map< Status, List< Task > > map = tasks
.stream()
.collect( Collectors.groupingBy( Task::getStatus ) );
final Collection< String > result = tasks
.stream() // Stream< String >
.mapToInt( Task::getPoints ) // IntStream
.asLongStream() // LongStream
.mapToDouble( points -> points / totalPoints ) // DoubleStream
.boxed() // Stream< Double >
.mapToLong( weigth -> ( long )( weigth * 100 ) ) // LongStream
.mapToObj( percentage -> percentage + "%" ) // Stream< String>
.collect( Collectors.toList() ); // List< String >
// 文件IO
final Path path = new File( filename ).toPath();
try( Stream< String > lines = Files.lines( path, StandardCharsets.UTF_8 ) ) {
lines.onClose( () -> System.out.println("Done!") ).forEach( System.out::println );
}
并行计算;
long[] arrayOfLong = new long [ 20000 ];
Arrays.parallelSetAll( arrayOfLong,
index -> ThreadLocalRandom.current().nextInt( 1000000 ) );
Arrays.stream( arrayOfLong ).limit( 10 ).forEach(
i -> System.out.print( i + " " ) );
System.out.println();
Arrays.parallelSort( arrayOfLong );
日期比较
LocalDateTime dt = LocalDateTime.now();
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
System.out.println(dtf.format(dt));
// Get duration between two dates
final LocalDateTime from = LocalDateTime.of( 2014, Month.APRIL, 16, 0, 0, 0 );
final LocalDateTime to = LocalDateTime.of( 2015, Month.APRIL, 16, 23, 59, 59 );
final Duration duration = Duration.between( from, to );
System.out.println( "Duration in days: " + duration.toDays() );
System.out.println( "Duration in hours: " + duration.toHours() );