可以在Lambda中执行此操作:
for (final WarehouseAddress address : warehouse.getAddresses()) {
if (!Validator.isEmpty(address.getPositions())) {
final Set<WarehouseAddressPosition> positions = new HashSet<WarehouseAddressPosition>(
address.getPositions());
if (address.getPositions().size() > positions.size()) {
throw new FieldDuplicatedException("position error");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我试过没有成功:
final Set<WarehouseAddressPosition> positions = warehouse.getAddresses().stream().filter(a -> !Validator.isEmpty(a.getPositions())).collect(
Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)
因为他试图收集一套WarehouseAdress而不是一套WarehouseAdressPosition.
错误:(130,156)java:不兼容类型:推理变量T具有不兼容的边界等式约束:br.com.erp.ejb.entity.sales.WarehouseAddressPosition下限:br.com.erp.ejb.entity.sales.WarehouseAddress
在Warehouse类我有:
private List<WarehouseAddress> addresses;
Run Code Online (Sandbox Code Playgroud)
在WarehouseAddress类中,我有:
private List<WarehouseAddressPosition> positions;
Run Code Online (Sandbox Code Playgroud)
说明:此代码获取位置的原始列表并将其收集在Set中,以创建没有重复值的集合并将大小与原始列表进行比较,以检查它是否重复.由于Set不接受重复值,因此在这种情况下大小将不同.
查看String.chars()Java 8 中的方法,我们可以看到以下javadoc:
默认的IntStream字符()
返回int的流,从此序列中对char值进行零扩展.任何映射到代理代码点的char都会被解释.
如果在读取流时序列被突变,则结果是未定义的.
返回:
此序列中char值的IntStream
自:
1.8
正如我们所看到的,我们必须找到这个javadoc CharSequence,因为它没有被重新定义String.这里同样的论点也适用String.codePoints().
javadoc描述了:
如果在读取流时序列被突变,则结果是未定义的.
但是Strings(相对于CharSequence)是不可变的,因此这个String类的javadoc不正确吗?我的感觉是它在逻辑下仍然是正确的,但它也意味着chars[]in String可以被变异,这直接抵抗不变性.
我有以下方法:
static IntStream streamedDivisors(final int n) {
return IntStream.range(2, n).parallel().filter(input -> n % input == 0);
}
static int streamedPhi(final int n) {
return streamedDivisors(n).reduce(0, x -> x * x);
}
Run Code Online (Sandbox Code Playgroud)
我在streamedPhi中遇到编译错误,表明我的lambda表达式中有不兼容的参数类型.有人能帮助我理解这个吗?我基本上试图取一个给定数字n的除数,并在我定义的某个函数上聚合一个数字(在这种情况下,对数字进行平方).
whereC#中的扩展方法的Java 8等价方法是什么?
如何Hashtable使用lambda表达式过滤Java 8中的元素
也许是一个相当深入的问题,但是有人知道为什么会这样
Java语言规范 - Java SE 8 Edition(2014-03-03)
它根据生产规则和终端定义了Java 8的正式无上下文语法,并不是所有已定义的规则都可以访问?
规范描述了许多规则,如
IfThenStatement:
if(Expression)Statement
要么
AssertStatement:
断言表达式;
断言表达式:表达;
这一切都很有意义.
但奇怪的是,一些定义的规则是其他人无法达到的,例如重要的规则
类型:
PrimitiveType
ReferenceType
总的来说,我计算了以下两条规则:其他人无法访问的规则:
如何定义具有无法访问规则的完整Java 8 CFG?
我安装了JDK 8,编译器不会导入nio.file.我正在使用Windows 7 64的cmd.exe.互联网上的每个地方都有这个问题,因为他们有JDK 6或更早版本,我有JDK 8所以我不知道发生了什么.import java.nio.*;工作正常但它仍然没有我需要的类.我一直在坚持下去
cannot find symbol
import java.nio.file;
^
Run Code Online (Sandbox Code Playgroud)
编辑:正如我所说,我不使用IDE,只需记事本+ cmd.exe.javac -version结果javac 1.8.0.
我使用的是JDK8,javac 1.8.0_05
我有这样的界面:
public interface NumberHolder<N extends Number> {
Optional<String> getNumberName();
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,NumericHolder方法getNumberName()返回的所有子类型Optional<String>.
但是......当我尝试访问它时:
NumberHolder numberHolder = null;
Optional<String> optional = numberHolder.getNumberName(); // warning is here
Run Code Online (Sandbox Code Playgroud)
编译器说:
warning: [unchecked] unchecked conversion
Optional<String> optional = numberHolder.getNumberName();
Run Code Online (Sandbox Code Playgroud)
但getNumberName()总是Optional<String>这样,为什么提出这个警告呢?
有人可以解释一下吗?
看起来当我在SceneBuilder中创建一个LineChart时,它默认为"String".那就是:LineChart<String, String>.
当我在代码中加载它然后尝试添加一些我得到的数据:
Exception in thread "JavaFX Application Thread" java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.String
Run Code Online (Sandbox Code Playgroud)
如果我在代码中创建图表,它工作正常:
val chart = new LineChart[Number, Number]( new NumberAxis(), new NumberAxis())
Run Code Online (Sandbox Code Playgroud)
我没有在SceneBuilder中看到任何允许我选择"数字"作为图表数据类型的选项.
我在这里错过了什么?
我有一个类似的课程
public class Person {
public Person(String firstName) {...}
public String getFirstname() {...}
// ... some other fields
}
Run Code Online (Sandbox Code Playgroud)
以及这些类的对象列表:
List<Person > objList = new ArrayList<>();
objList.add(new Person("Peter"));
objList.add(new Person("James"));
objList.add(new Person("Bart"));
Run Code Online (Sandbox Code Playgroud)
现在我需要一个以逗号分隔的列表,列出这个对象列表的第一个名字,比如"Peter,James,Bart".
我怎么能用lambdas和Java 8流做到这一点?TIA!
我修改了这段代码,在一个目录中完成了几个任务:
public class HDDSerialNumber
{
public void getHDDSerialNumber() throws IOException
{
try (DirectoryStream<Path> ds = Files.newDirectoryStream(Paths.get("/sys/block"), "sd*"))
{
// Get HDD Model
StreamSupport.stream(ds.spliterator(), false)
.map(p -> p.resolve("device/model")).flatMap(wrap(Files::lines))
.forEach(System.out::println);
// Get HDD Vendor
StreamSupport.stream(ds.spliterator(), false)
.map(p -> p.resolve("device/vendor")).flatMap(wrap(Files::lines))
.forEach(System.out::println);
// Get HDD Vendor
StreamSupport.stream(ds.spliterator(), false)
.map(p -> p.resolve("device/state")).flatMap(wrap(Files::lines))
.forEach(System.out::println);
}
}
static <T, R> Function<T, R> wrap(IOFunction<T, R> f)
{
return t ->
{
try
{
return f.apply(t);
}
catch (IOException ex)
{
throw new UncheckedIOException(ex);
}
};
}
interface IOFunction<T, …Run Code Online (Sandbox Code Playgroud) java ×10
java-8 ×10
lambda ×4
generics ×1
java-stream ×1
javadoc ×1
javafx ×1
parsing ×1
scenebuilder ×1
string ×1
syntax-error ×1