当我输入Arrays.sort(arr)Eclipse时,我收到此错误Arrays cannot be resolved,当我左键单击红色带下划线的Arrays单词时,我没有import java.util.Arrays按预期方式获得.我安装了JRE和JDK 1.8.0_20,并相应地配置了我的项目构建路径.可能是什么问题?
我知道标题可能有点令人困惑,但我无法想出更好的标题,所以让我解释一下我的意思......
我有这段代码:
int spacing = Integer.MAX_VALUE;
for (Edge edge : edges) {
if (!union.connected(edge.getStart(), edge.getEnd())) {
spacing = Math.min(spacing, edge.getWeight());
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法将此代码转换为java 8代码?
当然,第一步是过滤这很简单,但后来它变得很诡异,因为我必须spacing在Stream :: map方法中重用计算变量,我不知道这是否可能.
我在Eclipse Luna下有一个Java项目,使用EclEmma 2.3.1.201405111647(最新版),它使用Jacoco 0.7.1,它支持Java 8,如更改日志中所述:
"2.3.1版(2014/05/11)
Run Code Online (Sandbox Code Playgroud)Fixed ASM 5.0.1 dependency conflicts with new ASM bundles in Eclipse 4.4 (GitHub #83). Upgrade to JaCoCo 0.7.1 for full Java 8 support.
我现在有以下toString:
@Override
public String toString() {
// [BLOCK0]
if (0 == value) {
return "0B";
}
// [BLOCK1]
final MutableLong val = new MutableLong(value);
final StringBuilder sb = new StringBuilder();
// [BLOCK2]
Arrays.asList(TERA_BYTES, GIGA_BYTES, MEGA_BYTES, KILO_BYTES, BYTES).forEach(unit -> {
// [BLOCK3]
long divider = unit.toBytes(1);
long n = val.longValue() …Run Code Online (Sandbox Code Playgroud) 我正在使用jdk 1.8.0_20和Windows 8.1操作系统开发eclipse kepler.我选择了GlassFish的4位置并单击下一步,这让我C:\ Program Files文件\的Java\GlassFish的4\GlassFish的\域\ domain1不写
我尝试在stackoverflow中给出的答案,但没有得到我认为即给出Linux的解决方案.我尝试了几乎所有网站上给出的所有东西,但我没有得到解决方案.Plz有人回答我.谢谢你提前
有人告诉我tbat Java 8方法引用没有'true'函数指针那么强大.
怎么回事?方法引用与函数指针有何不同?
在尝试JDK 8 Streaming功能时,我决定尝试并行/串行流性能测试.我尝试使用在单位正方形上投掷随机飞镖来解决pi的值,并检查单位圆内有多少次着陆.我找到了apache-spark的例子.
这是代码.
package org.sample;
import java.util.concurrent.TimeUnit;
import java.util.stream.IntStream;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Fork;
import org.openjdk.jmh.annotations.Measurement;
import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.annotations.OutputTimeUnit;
import org.openjdk.jmh.annotations.Param;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.State;
import org.openjdk.jmh.annotations.Warmup;
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.NANOSECONDS)
@Warmup(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS)
@Measurement(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS)
@Fork(1)
@State(Scope.Benchmark)
public class MyBenchmark {
@Param({
"1000000",
"10000000"
}) int MAX_COUNT;
@Benchmark
public double parallelPiTest() {
long count = IntStream.range(1, MAX_COUNT).parallel().filter(i -> {
double x= Math.random();
double y= Math.random(); …Run Code Online (Sandbox Code Playgroud) 如何使用Java 8中的比较器和参数对集合进行排序?
这是一段代码:
List<Point> sortedNeurons = neurons.parallelStream()
.sorted((n1, n2) -> Double.compare(
n1.getEuclideanDistanceFrom(inputVector),
n2.getEuclideanDistanceFrom(inputVector)))
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
您将获得一个参数inputVector,该参数可以传递给返回原始double值的函数.如果应用于集合的元素,则返回一些数字.我希望通过此值对集合进行排序.类似于:通过getEuclideanDistanceFrom(inputVector,id)从神经元中选择id;
这里有三个问题:
PS我有一种强烈的感觉,它可以使用像双功能或双音素这样的东西来修复......但是无法弄清楚...
我只是尝试了几个java-8函数式编程,我对lamda表达式的行为几乎没有怀疑.我试图用简单的命令模式解释下面的问题.
public interface Editor {
public void open();
public void close();
// public void save();
}
Run Code Online (Sandbox Code Playgroud)
编辑实施
public class MyEditor implements Editor {
@Override
public void open() {
System.out.println("...opening");
}
@Override
public void close() {
System.out.println("...closing");
}
}
Run Code Online (Sandbox Code Playgroud)
界面动作
// this is actually a @FunctionalInterface
public interface Action {
public void perform();
}
Run Code Online (Sandbox Code Playgroud)
可行的物品.
public class Open implements Action {
private final Editor editor;
public Open(Editor editor) {
this.editor = editor;
}
@Override
public void perform() {
editor.open();
}
// …Run Code Online (Sandbox Code Playgroud) 我的目标
我想写一个通用的计时功能(我删除了这个问题的实际时间码,因为它并不重要).
我有一个输入和输出未知的函数.我想在循环中运行这个函数几次并将循环变量传递给它.
为此,我定义了一个接口,可以将循环变量转换为函数所需的类型.
我的守则
interface Function<R,T> {
R run(T input);
}
interface InputGenerater<T> {
T fromLoop(int i);
}
public static void time(Function func, InputGenerater in) {
for (int i = 0; i < 10; i++) {
func.run(in.fromLoop(i));
}
}
public static void main(String[] args) {
// example: my function expects a string, so we transform the loop variable to a string:
InputGenerater<String> intToString = (int i) -> String.valueOf(i) + "test";
Function<String, String> funcToTest = (String s) -> s + …Run Code Online (Sandbox Code Playgroud) 我已经default在接口中创建了用于实现equals(Object)和hashCode()以可预测方式的方法.我使用反射来迭代类型(类)中的所有字段以提取值并进行比较.代码依赖于Apache Commons Lang及其HashCodeBuilder和EqualsBuilder.
问题是我的测试告诉我,第一次调用这些方法时,第一次调用需要花费更多的时间.计时器使用System.nanoTime().以下是日志中的示例:
Time spent hashCode: 192444
Time spent hashCode: 45453
Time spent hashCode: 48386
Time spent hashCode: 50951
Run Code Online (Sandbox Code Playgroud)
实际代码:
public interface HashAndEquals {
default <T> int getHashCode(final T type) {
final List<Field> fields = Arrays.asList(type.getClass().getDeclaredFields());
final HashCodeBuilder builder = new HashCodeBuilder(31, 7);
fields.forEach( f -> {
try {
f.setAccessible(true);
builder.append(f.get(type));
} catch (IllegalAccessException e) {
throw new GenericException(e.toString(), 500);
}
});
return builder.toHashCode();
}
default <T, …Run Code Online (Sandbox Code Playgroud)