java sort 没法用_java – .forEach和.sort不起作用,不能在块中设置断点

我正在使用 Java 8(build 1.8.0_25),Netbeans 8.0.2,并将一些Java 8功能集成到现有应用程序中.排序和.forEach不起作用,所以我创建了一些测试代码,以确保我理解lambdas等,并诊断问题.下面是新代码和代码的混合,以便与我的系统中的数据进行交互:

public void test(Registration reg) {

/* new code */

List family = new ArrayList<>();

family.add("Mom");

family.add("Dad");

family.add("Brother");

family.add("Sister");

family.forEach(p -> System.out.println(p));

Collections.sort(family, (p1,p2) -> {

System.out.println(p1 + " <==> "+ p2);

return p1.compareToIgnoreCase(p2);

});

family.forEach(p -> System.out.println(p));

/* code to test with my system data */

List item = new ArrayList<>();

List regI = reg.getRegistrationItem();

regI.forEach(p -> {

System.out.println(p.toString());

item.add(p);

});

Collections.sort(regI, (r1,r2) -> {

System.out.println(r1.toString() + r2.toString());

return r1.getId().compareTo(r2.getId());

});

for (RegistrationItem r : regI) {

item.add(r);

}

}

注册是反映事件数据的POJO,其中包括作为另一个POJO详细信息的RegistrationItem列表.在此测试中,列表大小为4.

标有新代码的部分非常有效.它打印出列表,在排序时打印,然后打印排序列表.我也可以在排序块中设置断点,这是我所期望的.

使用现有代码是另一回事. .forEach和.sort不起作用,我无法在java 8块中设置断点.调试器步骤到代码,但它似乎不执行.当我进入for循环时,“item”的大小仍为0.看上去就是为了证明数据可以移动,按预期工作,结果大小为4.

任何帮助,将不胜感激.

我道歉我可能不清楚.这只是测试代码,演示了我在更改为java 8后在数十个地方遇到的问题.比较器已更改为lambdas,而for循环更改为.forEach且没有任何工作正常.除了这个帖子之外,此代码没有其他目的.

在示例中,我已验证reg是否正确传递给测试方法.它的结构正确,regI的大小为4,具有正确结构的对象.

>新的数组列表“item”只是为.forEach测试提供一个简单的容器

> .forEach是使用一段代码进行测试并设置断点.它不起作用.

> .sort用于在同一容器中重新排序列表.我没有使用溪流,因为我不想移动它.它不起作用

> for循环是为了证明列表具有有效数据的老式方式,以及.forEach的意图应该有效.它按预期工作

我假设我的环境或代码有问题,但我自己无法识别它.

在使用Holger和Stuart Marks建议的方法进行测试之后,很明显这与IndirectList和覆盖相关的问题相同.我的JRE和JDK都是Java 8,我已升级到EclipseLink 2.5.2.我已经证明了问题是100%的时间用比较器,Collections.sort与lambdas和.forEach发生.这似乎是一个非常普遍的问题,我很惊讶另一个问题并没有吸引更多的关注,而不是我的一个上升.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值