小编Jir*_*ser的帖子

为什么Stream没有toList()方法?

使用Java 8流时,采用列表,从中创建流,执行业务并将其转换回来是很常见的.就像是:

 Stream.of(-2,1,2,-5)
        .filter(n -> n > 0)
        .map(n -> n * n)
        .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

为什么' .collect(Collectors.toList())'部分没有捷径/方便的方法?在Stream接口上,有将方法转换为数组的方法toArray(),为什么toList()缺少?

恕我直言,将结果转换为列表比数组更常见.我可以忍受这一点,但称这种丑陋是令人讨厌的.

有任何想法吗?

java java-8 java-stream

34
推荐指数
3
解决办法
4114
查看次数

如何在Linux中配置命令提示符以显示当前目录?

如何在Linux中配置命令提示符以显示当前目录?我希望能够在.zshrc文件中设置此设置.

linux zsh

15
推荐指数
3
解决办法
3万
查看次数

在Java 8中尝试monad

是否有内置的monad支持处理异常处理?类似于Scala的尝试.我问,因为我不喜欢未经检查的例外.

monads java-8

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

如何使maven enforcer插件在指定阶段运行?

我想确保生成的zip文件的文件大小不超过400 MB,所以我创建了这个规则:

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <executions>
          <execution>
            <id>enforce-file-size</id>
            <goals>
              <goal>enforce-once</goal>
            </goals>
            <configuration>
              <rules>
                <requireFilesSize>
                  <maxsize>419430400</maxsize> <!-- the final zip should not exceed 400 MB -->
                  <files>
                   <file>${project.build.outputDirectory}.zip</file>
                  </files>
                </requireFilesSize>
              </rules>
              <fail>true</fail>
            </configuration>
          </execution>
        </executions>
      </plugin>
Run Code Online (Sandbox Code Playgroud)

但是,mvn enforcer默认绑定到validate阶段,不幸的是此时文件不存在.zip文件由绑定到generate-resourcesmvn阶段的ant任务生成.

有没有办法让mvn enforcer运行generate-resources?换句话说,如何验证构建后置条件而不是预先条件?

maven-plugin maven maven-enforcer-plugin

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

在Google URL缩短器输出中禁用视觉上模糊的字符

有没有办法说(以编程方式,我的意思是他们的API)谷歌URL缩短器不生成短的URL与字符,如:

0 O

1 l

因为人们在从显示器读取这些字符并在其他地方键入它们时经常会出错.

google-api url-shortener google-url-shortener

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

通过反射调用构造函数的性能

通过反射调用构造函数的速度有多少,例如:

Class c = map.get("somestr");
Constructor t = c.getDeclaredConstructor(int.class,MyClass.class);
MyObject o = (MyObject)t.invoke(<params>);
or
Constructor t = map.get("somestr");
MyObject o = (MyObject)t.invoke(<params>);
Run Code Online (Sandbox Code Playgroud)

比使用关键字new

假设该类将被缓存.

java reflection performance

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

Scala - 使用最小语法设计 DSL

我希望在 Scala 中设计一个 DSL,它的语法可能最少。它旨在供不了解 Scala 但可以利用 Scala 类型系统进行验证和错误检查的用户使用。在我的脑海中,DSL 是这样的:

outer {
    inner(id = "asdf") {
        value("v1")
        value("v2")
    }
}
Run Code Online (Sandbox Code Playgroud)

这个剪断应该产生一个这样的值:

Outer(Inner("asdf", Value("v1") :: Value("v2") :: Nil))
Run Code Online (Sandbox Code Playgroud)

给定数据结构

case class Outer(inner: Inner)
case class Inner(values: List[Value])
case class Value(value: String)
Run Code Online (Sandbox Code Playgroud)

这个想法是inner函数只在闭包之后可用outervalue函数只在闭包之后可用inner,等等。这就是以下不会编译:outer { value("1") }

我怎样才能实现这样的事情?最后,数据结构不需要是不可变的,只要它是强类型的,它就可以是任何东西。

我对 Scala 宏不熟悉,但我可以用宏来解决这个问题吗?


到目前为止,我最接近的是以下实现:

object DSL extends App {

    def outer = new Outer()

    class Outer(val values: mutable.MutableList[Inner] = mutable.MutableList.empty) {
        def inner(id: String): Inner = …
Run Code Online (Sandbox Code Playgroud)

dsl scala anonymous-function

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

关于整数值中的前导零

我有以下代码

int a = 01111;
System.out.println("output1 = " + a);
System.out.println("output2 = " + Integer.toOctalString(1111));
Run Code Online (Sandbox Code Playgroud)

和输出是

output1 = 585
output2 = 2127
Run Code Online (Sandbox Code Playgroud)

我期待输出如下所示。

output1 = 2127
output2 = 2127
Run Code Online (Sandbox Code Playgroud)

为什么585当我打印直接 int 值时它会给出?我期待java自动将前导零的值转换为八进制。

01111和之间是什么关系585

java

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

Bash多行命令中的上/下导航

有什么方法可以将命令作为多行命令保存到bash历史记录中,然后向上和向下导航以进行一些编辑并再次运行?

$ shopt -s cmdhist
$ shopt -s lithist
$ echo "1"\
&& echo "2"\
&& echo "3"
Run Code Online (Sandbox Code Playgroud)

现在,如果我按向上箭头,我想看看

$ echo "1"\
&& echo "2"\
&& echo "3"
Run Code Online (Sandbox Code Playgroud)

..again,但庆典给我echo "1"&& echo "2"&& echo "3"。即尽管设置了cmdhistlithist标志,但它删除了新行。

如果向上箭头起作用并显示了多行命令,如何在其中上下导航?

bash

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

try-with-resource vs finally优先级

try-with-resource构造的优先规则是什么?这是一个例子(注意:所有提到的类都实现Closeable):

try (Page closeablePage = page;
     PipedOutputStream out = outs;
     SequenceWriter sequenceWriter = mapper.writer().writeValuesAsArray(out)) {
  // do stuff
} finally {
  callback.run();
}
Run Code Online (Sandbox Code Playgroud)

回调何时运行?我的假设是:

  1. 关闭 SequenceWriter
  2. 关闭 PipedOutputStream
  3. 关闭 Page
  4. 运行回调

我错了吗?

java try-with-resources

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