【发布时间】:2013-12-06 06:50:50
【问题描述】:
我有一个函数,它有 2 个不同类型的列表作为参数输入。为了优化,我想创建一个最小列表类型的 HashSet / Hashtable(它们中的任何一个)。 java有没有办法在运行时决定type of 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>();
}
}
【问题讨论】:
-
您是否有特别的原因想要这样做?为什么你不能做一些逻辑测试,选择正确的集合类型,然后继续使用超类型?
-
您能详细说明一下吗?您正在创建
Set<SportsMan>或Set<Sport>但您想用它做什么?所有通用的Set操作都可用于其中任何一个。 -
对不起各位 - 编辑了我的问题
-
你没有回答这个问题:这个集合创建后你会做什么?您的代码创建了一个集合并将其丢弃。
-
我会用它来做一个更大的集合的连接操作。
标签: java hashmap runtime hashset