根据Java中给定列表的大小创建具有不同实现的数据类型类
因此,我试图创建一个具有不同配置的数据类型类,具体取决于main中给出的列表大小。这是一个房屋列表的数据类型,这个想法是,如果房屋列表(大小)的数量大于1000,我会使用树或AVL树实现名为SmartULS的数据类型。根据Java中给定列表的大小创建具有不同实现的数据类型类
另一方面,如果它小于1000,可以使用散列表来实现。这个想法是根据给定列表的大小,使排序/获取/设置/删除更快。
我到目前为止工作了这一点,但它不工作:
public class houseListings<K,V> { protected TreeMap<K,V> tree = new TreeMap<>();
protected AbstractHashMap<K,V> hashMap = new AbstractHashMap<K,V>();
public void setHouseListings(size){
int threshold = 1000;
if (size >= threshold) {
map = new AbtractMap<K,V>();
}
else
map = new TreeMap<K,V>();
}
}
回答:
我想原因它不工作是因为
- 你有错别字在你的代码
- 你正在使用错误的类型(如
AbstractHashMap
)。您应该使用HashMap
和TreeMap
现在,来选择不同的策略“,你应该考虑使用strategy design pattern的理想方式。我已经编写了一些代码来帮助您可视化它。
public static void main(String... args) { //... some code that reads/calculates threshold
DataVolumneStrategy strategy;
if (threshold >= 1000) {
strategy = new HighVolumeStrategy();
} else {
strategy = new NormalStrategy();
}
//use map
strategy.getMap();
}
interface DataVolumneStrategy {
Map<K, V> getMap();
}
static class NormalStrategy implements DataVolumneStrategy{
@Override
public Map<K, V> getMap() {
return new HashMap<>();
}
}
static class HighVolumeStrategy implements DataVolumneStrategy {
@Override
public Map<K, V> getMap() {
return new TreeMap<>();
}
}
希望这会有所帮助。
以上是 根据Java中给定列表的大小创建具有不同实现的数据类型类 的全部内容, 来源链接: utcz.com/qa/264896.html