小编NoD*_*und的帖子

Java 8 findFirst并遇到订单

对JavaDoc中findFirst说,如果流有一个邂逅的命令,那么第一个元素总是会返回,但如果流没有遭遇订单,可以返回的任何元素.

我试图演示它如何在没有遭遇顺序的流上工作,但我不能让它返回除了实际的第一个元素之外的任何东西.

我尝试将元素添加到a Set,它没有定义的遭遇顺序:

    Set<String> words = new HashSet<>();
    words.addAll(Arrays.asList("this", "is", "a", "stream", "of", "strings"));
    Optional<String> firstString = words.stream()
            .findFirst();
    System.out.println(firstString);
Run Code Online (Sandbox Code Playgroud)

每次我跑,我得到a第一个字符串.然后我试图做一个Collections.shuffle关于List它添加到之前Set,但这并没有改变任何东西.

    List<String> wordList = Arrays.asList("this", "is", "a", "stream", "of", "strings");
    words = new HashSet<>();
    words.addAll(wordList);
    firstString = words.stream()
            .findFirst();
    System.out.println(firstString);
Run Code Online (Sandbox Code Playgroud)

a每次都会回复这个词.

然后我尝试使用unorderedfrom方法BaseStream,声称返回没有遇到顺序的流,但没有区别:

    firstString = Stream.of("this", "is", "a", "stream", "of", "strings")
            .unordered()
            .findFirst();
    System.out.println(firstString);
Run Code Online (Sandbox Code Playgroud)

现在我this每次都得到这个词.我错过了什么吗?有没有办法证明findFirst在无序流上返回不同的值?

java java-8

22
推荐指数
3
解决办法
3267
查看次数

Maven版本插件:从Maven依赖项引用rule.xml吗?

我正在使用mvn versions:display-dependency-updates versions:display-plugin-updates目标来检查依赖项或插件更新。

我的maven项目是一个多模块项目,如下所示:

moduleA
 |- moduleB1
 |    |- moduleC  
 |- moduleB2
 |- build-config/rules.xml
Run Code Online (Sandbox Code Playgroud)

由于有一些不需要的更新,例如我不想要的beta,所以我做了一个过滤器(有效)。我这样使用它:

<profile>
  <id>maven-version-plugin-1</id>
  <activation>
    <property>
      <name>version.rules.uri</name>
    </property>
  </activation>
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>versions-maven-plugin</artifactId>
        <configuration>
          <rulesUri>${version.rules.uri}</rulesUri>
        </configuration>
      </plugin>
    </plugins>
  </build>
</profile>
Run Code Online (Sandbox Code Playgroud)

我被迫使用配置文件和属性,version.rules.uri因为它必须引用现有文件(默认情况下,它指向./build-config/rules.xml,但也位于我settings.xml的绝对路径中)。

我想通过以下方式避免这种情况:

  • 发布一个独立的build-config项目
  • 使用一些uri引用该项目: m2:myGroupId:myArtifactId:version:scope:jar/rules.xml

现在的问题是:是否有Maven Wagon插件(由Maven版本插件使用)的实现,该实现允许读取诸如jar之类的存储库条目?

java maven maven-wagon-plugin versions-maven-plugin

6
推荐指数
2
解决办法
1684
查看次数

使用 EclipseLink 和 Hibernate (JPA2.1) 生成架构 - @ForeignKey 被忽略

我正在测试 JPA2.1 和新的“模式生成”功能。为此,我在 HyperSQL 数据库下测试了两种实现:

  • EclipseLink 2.5.2-M1 是参考实现。
  • 休眠4.3

我对实现没有任何偏好(甚至对性能也没有偏好)。我测试了 EclipseLink,因为它是第一个可用的 JPA2.1 实现,但现在,Hibernate 4.3 已经出现并且兼容 JPA2.1。我唯一想要的就是获得独立于 JPA 提供程序的东西 - 除了配置(如缓存、日志记录、静态编织等)。

至于模式生成,我对几个方面感兴趣:

  • 我对 EclipseLink 的默认命名策略不满意:实体类名称或字段/属性名称大写,使其不可读。而且我不扩展会话定制器(我尝试过一次,我认为添加注释更容易,危险更小......)。
  • 我不喜欢在查询中使用大写;好吧,这是个人喜好,但我在 Linux 上使用 mySQL 也遇到了问题,因为它们不遵循标识符,并且关键字不区分大小写,除非您双引号它们SQL 习惯用法。
  • 默认情况下,Hibernate 并没有好多少,但可以使用ImprovedNamingStrategy. 遗憾的是,它没有使用显式名称来命名外键:FK_8gc2pk9u5bsbhpi91x93c77o不是显式的,而是fk_foobar_sample显式的。

因此,我添加了@Table,@JoinColumn@Column注释来强制我的命名策略,现在我被外键生成阻止了,它的支持似乎很差(当遵守 JPA2.1 时):

  • Hibernate 希望我使用@org.hibernate.annotations.ForeignKey,为此我需要注释字段或属性。但它是一个 hibernate 注释,因此它不符合 JPA2.1。
  • EclipseLink 永远不会生成外键约束,除非我将 a@JoinColumn和 aforeignKey@ForeignKey(name="..."). 但是,当它生成外键时,定义丢失了(即:),ALTER TABLE foobar ADD CONSTRAINT fk_foobar_zorg FOREIGN KEY () REFERENCES …

hibernate eclipselink java-7 jpa-2.1

5
推荐指数
1
解决办法
2098
查看次数

EclEmma,Java8和Lambda - 没有关于lambda表达式的报道

我在Eclipse Luna下有一个Java项目,使用EclEmma 2.3.1.201405111647(最新版),它使用Jacoco 0.7.1,它支持Java 8,如更改日志中所述:

"2.3.1版(2014/05/11)

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.
Run Code Online (Sandbox Code Playgroud)

我现在有以下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)

java-8 jacoco eclemma

2
推荐指数
1
解决办法
3131
查看次数

在bash中,我可以将数组作为函数的args传递(如xargs所做的那样)吗?

我使用bash脚本生成一个文件列表,其中每个文件名可能包含空格(它在Windows上,使用Git Bash,我需要一些适用于Bash 3的文件).

该脚本大致如下:

_my_function() {
  for i; do 
    echo $i
  done
}

_test() {
  local do_add_list
  do_add_list[0]='Some file'
  do_add_list[1]='Another file'  
  _my_function $do_add_list[@]
}
Run Code Online (Sandbox Code Playgroud)

虽然我真的不想按原样传递数组,但我想将它作为_my_function类似xargs或类似的参数传递,

_my_function 'Some file' 'Another file'
Run Code Online (Sandbox Code Playgroud)

除了作为全局变量之外,我怎么能在Bash 3(bash3的msys端口)中做到这一点?

bash git-bash

1
推荐指数
1
解决办法
211
查看次数