小编Vit*_*ius的帖子

Java 8将<V>列入Map <K,V>

我想使用Java 8的流和lambdas将对象列表转换为Map.

这就是我在Java 7及以下版本中编写它的方法.

private Map<String, Choice> nameMap(List<Choice> choices) {
        final Map<String, Choice> hashMap = new HashMap<>();
        for (final Choice choice : choices) {
            hashMap.put(choice.getName(), choice);
        }
        return hashMap;
}
Run Code Online (Sandbox Code Playgroud)

我可以使用Java 8和Guava轻松完成此任务,但我想知道如何在没有Guava的情况下完成此操作.

在番石榴:

private Map<String, Choice> nameMap(List<Choice> choices) {
    return Maps.uniqueIndex(choices, new Function<Choice, String>() {

        @Override
        public String apply(final Choice input) {
            return input.getName();
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

还有Java 8 lambda的番石榴.

private Map<String, Choice> nameMap(List<Choice> choices) {
    return Maps.uniqueIndex(choices, Choice::getName);
}
Run Code Online (Sandbox Code Playgroud)

java lambda java-8 java-stream

892
推荐指数
16
解决办法
60万
查看次数

命名参数是否可用于模板模板参数

如果我需要foo使用template-template参数定义模板函数,我通常会执行以下操作:

// Notice that the template parameter of class T is unnamed.
template <template <typename> class T> void f() { std::cout << "Yay!\n"; }
Run Code Online (Sandbox Code Playgroud)

请注意,template-template参数的template参数是未命名的,但我们可以为此参数指定一个名称:

// Now the template parameter of class T is named INNER.
template <template <typename INNER> class T> void f(const INNER &inner)
{ std::cout << inner << " Yay!\n"; }
Run Code Online (Sandbox Code Playgroud)

这似乎没有用,因为我无法INNER在函数中提供参数,上面的代码会产生以下错误:

错误:'INNER'未命名类型

令我惊讶typename INNERtypename是,在为了命名类型之后,所有关键字都没有命名类型.无论如何,这很容易修复:

// Now INNER is the name of the template parameter of class T and …
Run Code Online (Sandbox Code Playgroud)

c++ templates template-templates

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

ImmutableArray在哪里?

为什么ImmutableArray似乎不在Microsoft Immutable Collections NuGet包版本1.0.34中

在此输入图像描述

c# immutable-collections

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

Java DOT 运算符的目的是什么?

有人能告诉我 Java DOT 运算符实际上是做什么的吗?

例如:

public class {
    int value;
    public void great() {};
    ... 
}
Run Code Online (Sandbox Code Playgroud)
public static void main(String[] args) {

    Person p = new Person();

    Person.great(); // <--- here

    Person.value; // <--- here
Run Code Online (Sandbox Code Playgroud)

我想知道.当我执行Person.great()or时,上面代码中的运算符在做什么Person.value

java

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

将 Scala 对象/伴随对象作为参数类型传递

我想要一个这样的方法:

def foo[O] = O(1,2,3)
Run Code Online (Sandbox Code Playgroud)

其中“O”将是具有定义的 apply 方法的 Scala 对象。通过我的签名,我收到了“无法解析符号 O ”的错误消息。

调用 foo 将“Set”或“List”作为参数传递给我“ Type XXX需要类型参数”。将伴随对象作为参数类型传递的方法是什么?

如何创建此方法?

generics scala

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

递归函数g(n)

我有一个g(n)可以给出的功能g(n)=f(n,n) .这是由递归定义的

f(i, j) = 1/3
(f(i?1, j) + f(i?1, j ?1) + f(i, j ?1))

with f(0,0) = 0;  f(i,0) = 1,i > 0; f(0, j) = 1, j > 0
Run Code Online (Sandbox Code Playgroud)

我编写了一个java程序来计算10-15的值.快速处理前几个值,但是在值结束时,程序变得非常慢并且需要很长时间来处理结果.我的代码有问题还是只是一个冗长的计算?

public class javaapplication4 {
    private static double f(double i, double j) {
        if (i == 0.0 && j == 0.0) return 0.0;
        if (i == 0.0 || j == 0.0) return 1.0;
        return (f(i - 1, j) + f(i - 1, j - 1) …
Run Code Online (Sandbox Code Playgroud)

java algorithm recursion

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