相关疑难解决方法(0)

如何在Java中创建通用数组?

由于Java泛型的实现,您不能拥有这样的代码:

public class GenSet<E> {
    private E a[];

    public GenSet() {
        a = new E[INITIAL_ARRAY_LENGTH]; // error: generic array creation
    }
}
Run Code Online (Sandbox Code Playgroud)

如何在保持类型安全的同时实现这一点?

我在Java论坛上看到了这样的解决方案:

import java.lang.reflect.Array;

class Stack<T> {
    public Stack(Class<T> clazz, int capacity) {
        array = (T[])Array.newInstance(clazz, capacity);
    }

    private final T[] array;
}
Run Code Online (Sandbox Code Playgroud)

但我真的不知道发生了什么.

java arrays generics reflection instantiation

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

如何在Java中将多个(任意数量的)Set <String>合并为一个?

我有多个Set<String>我需要合并为一个Set<String>.如何在Java中执行此操作?请注意,我正在guava尽可能地使用API来帮助解决问题.例如,我有3个类如下.

public class One {
 public static Set<String> SET = Sets.newHashSet("a","b","c");
}
public class Two {
 public static Set<String> SET = Sets.newHashSet("a","d","e","f");
}
public class Three {
 public static Set<String> SET = Sets.newHashSet("w","x","y","f");
}
Run Code Online (Sandbox Code Playgroud)

现在,我需要将这些集合的任意组合合并为一个.例如,我可能需要合并

  • One.SET+ Two.SET+ Three.SET成一个产生{"a","b","c","d","e","f","w","x","y"},
  • One.SET+ Three.SET成一个产生{"a","b","c","w","x","y","f"},
  • Two.SET+ Three.SET成一个产生{"a","d","e","f","w","x","y"},
  • 等等

我创建了一个合并集合数组的方法Set<String>[],但是这不起作用(这里通过这个SO文章在Java中创建一个集合数组来解释).这是要合并的代码.它有效(编译).

public static Set<String> immutableSetOf(Set<String>[] sets) {
 Set<String> set = new HashSet<String>();
 for(Set<String> s : sets) {
  set.addAll(s);
 }
 return …
Run Code Online (Sandbox Code Playgroud)

java collections guava

3
推荐指数
2
解决办法
6914
查看次数

标签 统计

java ×2

arrays ×1

collections ×1

generics ×1

guava ×1

instantiation ×1

reflection ×1