java - 如何构造动态类型的哈希表

标签 java hashmap runtime hashset

我有一个函数,它有 2 个不同类型的参数输入列表。为了优化,我想创建一个最小列表类型的 HashSet/Hashtable (其中之一)。 java中有没有办法在运行时决定Set的类型

当前代码:

   public static void innerJoinHash(List<SportsMan> sportsMans, List<Sport> sportList) {
        if (sportsMans.size() < sportList.size()) {
            Set<SportsMan> set = new HashSet<SportsMan>();
        } else {
            Set<Sport> set = new HashSet<Sport>();
        }
    }

我想做的事:

public static void innerJoinHash(List<SportsMan> sportsMans, List<Sport> sportList) {
    Set< // some magic //> set       
       if (sportsMans.size() < sportList.size()) {
         set = new HashSet<SportsMan>();
    } else {
        set = new HashSet<Sport>();
    }
}

最佳答案

您可以尝试使用 Java 泛型。 Set<E> customSet=new HashSet<E>();

这是一种在运行时使用分配数据类型的方法。

  public static void innerJoinHash(List<SportsMan> sportsMans, List<Sport> sportList) {
  Set set = new HashSet();  
  if (sportsMans.size() < sportList.size()) {
        set.addAll(sportsMans)
    } else {
        set.addAll(sportList);
    }
  }

关于java - 如何构造动态类型的哈希表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20417829/

相关文章:

java - 为什么使用 java.io.Filter* 而不是扩展具体的流实现?

java - 适用于 Android 的 Google 跟踪代码管理器 NullPointerException

java.util.ConcurrentModificationException,但我正在迭代副本,而不是正在修改的集合

ruby-on-rails - 检查 HashMap 数组中是否存在特定值

.net - VS 10.0 运行时是 .Net Framework 4 的一部分吗?

java - 尝试从 Java 运行应用程序

java - 如何使用Java将整数拆分为数组?

java - BigDecimal 的 JPA @Size 注释

java - 这个 Java HashMap 声明有什么问题?轻松点

algorithm - {0,1} 上的序列数,使得序列至少包含一半的