Tag: hashmap

HashMap可序列化

HashMap实现了Serializable接口; 所以它可以序列化。 我查看了HashMap的实现,并将Entry []表标记为瞬态。 由于Entry []表是存储Map的全部内容的表,如果无法序列​​化,那么在反序列化过程中如何构造Map?

HashMap的迭代器是什么意思是快速失败并且HashTable的枚举器不是?

我正在查找这两个类之间的区别,这一点在很多答案中得出了这个博客的来源: http : //javarevisited.blogspot.com/2010/10/difference-between-hashmap-and。 HTML 但是我没有完全理解它。 有人可以详细说明吗? 或许有一个例子? 感谢您的关注!

HashMap与Switch语句性能

HashMap本质上具有O(1)性能,而开关状态可以具有O(1)或O(log(n)),具体取决于编译器是使用tableswitch还是查找开关。 可以理解的是,如果switch语句是这样编写的, switch (int) { case 1: case 2: case 3: case 4: default: } 那么它将使用一个tableswitch,并且显然比标准的HashMap具有性能优势。 但是如果switch语句稀疏怎么办? 这将是我将要比较的两个例子: HashMap example = new HashMap() {{ put(1, “a”); put(10, “b”); put(100, “c”); put(1000, “d”); }}; 。 switch (int) { case 1: return “a”; case 10: return “b”; case 100: return “c”; case 1000: return “d”; default: return […]

如何对HashMap键进行排序

我有一个问题 HashMap<String, List> dateMilestoneMap = new HashMap<String, List>(); 我将动态键放在Hashmap对象中,如下所示: dateMilestoneMap.put(“”+crateDate,value); 最后我得到的结果如下: (“28/01/2012”,value) (“01/01/2012”,value) (“26/01/2012”,value) 我希望以desc或asc顺序返回键值对。 我怎样才能做到这一点?

Java按值排序HashMap

我有这个HashMap: HashMap m 它基本上存储任何单词(String)及其频率(整数)。 以下代码按值排序HashMap: public static Map sortByValue(Map map) { List<Map.Entry> list = new LinkedList<Map.Entry>(map.entrySet()); Collections.sort(list, new Comparator<Map.Entry>() { public int compare(Map.Entry m1, Map.Entry m2) { return (m2.getValue()).compareTo(m1.getValue()); } }); Map result = new LinkedHashMap(); for (Map.Entry entry : list) { result.put(entry.getKey(), entry.getValue()); } return result; } 现在情况已经改变,我有这个: HashMap; class doc{ integer freq; HashMap; […]

索引List时的最佳HashMap初始容量

我有一个列表( List list ),我想使用map( HashMap map )通过id来索引其对象。 我总是使用list.size()作为HashMap构造函数中的初始容量 ,如下面的代码所示。 这是在这种情况下使用的最佳初始容量吗? 注意 :我永远不会在地图上添加更多项目。 List list = myList; Map map = new HashMap(list.size()); for(T item : list) { map.put(item.getId(), item); }

在Java ConcurrentHashMap中打印所有键/值对

我试图简单地在ConcurrentHashMap中打印所有键/值对。 我在网上找到了这个代码,我认为会这样做,但它似乎是获取有关桶/哈希码的信息。 其实说实话输出很奇怪,可能我的程序不正确,但我首先要确保这部分是我想要使用的。 for (Entry entry : wordCountMap.entrySet()) { String key = entry.getKey().toString(); Integer value = entry.getValue(); System.out.println(“key, ” + key + ” value ” + value); } 这为大约10个不同的键提供输出,其计数似乎是映射到插入的总插入数的总和。

使用数据库中的值填充枚举

我有一个映射String-> Integer的表。 我想用数据库中的值填充枚举,而不是静态创建枚举。 这可能吗 ? 所以,而不是静态地揭示这个: public enum Size { SMALL(0), MEDIUM(1), LARGE(2), SUPERSIZE(3) }; 我想动态创建这个枚举,因为数字{0,1,2,3}基本上是随机的(因为它们是由数据库的AUTOINCREMENT列自动生成的)。

从ArrayList Java中的HashMap键中检索所有值

美好的一天,这让我感到困惑(大脑冻结!),似乎缺少一些东西。 有一个我用HashMap填充的ArrayList。 现在我放入了我的HashMap和arraylist。 Map.put(DATE, value1); Map.put(VALUE, value2); arraylist.put(Map); 由于我正在解析JSON,因此arraylist的大小会增加。 现在我的问题是如何从arraylist中的两个映射键获取值? 我试过这个 if(!list.isEmpty()){ // list is an ArrayList for(int k = 0; k < list.size(); k++){ map = (HashMap)list.get(k); } } Log.d(TAG, "map size is" + map.size()); String [] keys = new String[map.size()]; String [] date_value = new String[map.size()]; String [] value_values = new String[map.size()]; int […]

如果查找键是String,则为EnumMap或HashMap

我试图权衡在HashMap上使用EnumMap优缺点。 因为,我将始终使用String查找,似乎带有String键的HashMap将是正确的选择。 但是, EnumMap似乎更好的设计,因为它传达了我将密钥限制为特定枚举的意图。 思考? 这是一个假想的例子,展示了我将如何使用Map : enum AnimalType { CAT, DOG } interface Animal {} class Cat implements Animal {} class Dog implements Animal {} public class AnimalFactory { private static final Map enumMap = new EnumMap(AnimalType.class); // versus private static final Map stringMap = new HashMap(); static { enumMap.put(AnimalType.CAT, new Cat()); enumMap.put(AnimalType.DOG, new […]