Tag: 地图

在Java中使用任意对象作为Map键的任何缺点?

我的应用程序中有两种对象,其中一种对象只有一种对应的对象。 跟踪这种关系的明显选择是Map ,就像HashMap一样。 但不知何故,我很怀疑。 我可以将一个对象用作Map中的一个键,传递它,让它坐在另一个集合中,并随时从Map中检索它的伙伴吗? 创建一个对象后,我所传递的只是一个标识符,对吧? 所以可能没有问题。 如果我对密钥进行序列化和反序列化怎么办? 还有其他警告吗? 我应该使用其他东西来关联对象,就像我自己生成的数字一样吗?

为什么我不能初始化Map ?

我想存储一组int / String值,但int不一定是增量的,这意味着数据可以是: , , . 所以我正在尝试创建一个Dictionary的c#等价物,但它只是无法编译,说“令牌上的语法错误”int“,此符号后面的维度”在该行上: private Map courses; 谁能告诉我为什么会这样? 还有一个很好的替代方法,可以创建一个对象作为int和String的占位符,然后使用数组来存储它们?

将图像X,Y坐标转换为经度和纬度?

我设置了特定静态地图图像的最小经度和纬度值。 那张地图图片是某个国家的剪影。 /** * Maximum longitude value of the map */ private float mapLongitudeMax; /** * Minimum longitude value of the map */ private float mapLongitudeMin; /** * Maximum latitude value of the map */ private float mapLatitudeMax; /** * Minimum latitude value of the map */ private float mapLatitudeMin; 我有一个名为mapImage的BufferedImage 。 我有一个与朋友一起写的方法,它接收longitude和latitude并在地图上大约给你一个X和Y位置,这样你就可以在地图上画出一些东西。 现在,如果我想在地图上移动鼠标,我希望它显示我的鼠标位置的longitude/latitude ,这意味着我需要创建一个方法,将鼠标位置的X和Y转换为longitude和latitude […]

迭代EnumMap#entrySet

枚举Map#entrySet对于所有Map实现都没有预期的效果,特别是对于EnumMap, IdentityHashMap ,这里是来自Josh Bloch的益智游戏(Puzzle 5)的示例代码 – public class Size { private enum Sex { MALE, FEMALE } public static void main(String[] args) { printSize(new HashMap()); printSize(new EnumMap(Sex.class)); } private static void printSize(Map map) { map.put(Sex.MALE, Sex.FEMALE); map.put(Sex.FEMALE, Sex.MALE); map.put(Sex.MALE, Sex.MALE); map.put(Sex.FEMALE, Sex.FEMALE); Set<Map.Entry> set = new HashSet<Map.Entry>(map.entrySet()); System.out.println(set.size()); } } 是的,这会产生错误的结果 – 应该是 2 2 […]

Java中的有序列表映射实现

我想知道是否有一个类在Java中实现Map和List接口。 我有一个主要是Map的数据结构。 我将字符串(ID)映射到Image s。 但是在我的代码的特定部分中,我需要向用户显示所有可用的IDed Images 。 到目前为止,唯一的方法是写下这个: for (String id : myMap.keySet()) { // get the image like this “myMap.get(id)” } 所以有一个实现Map和List的类很好,所以我可以简单地写: for (Image img : myMap) { // the image is img } 有谁知道这样的实现? 编辑 :在查看答案(这些都是正确的,投票)之后,我现在意识到我还需要对地图进行排序。 当我说“排序”时,我的意思是我希望它以特定的顺序获得值,我可以修改它。 我知道这不是原来的问题,但我才意识到我需要这个。 编辑2 :我似乎优柔寡断。 我需要的是有序地图,而不是有序地图。 对不起,人们有困惑。

如何在非线程方法中解决这个问题“线程中的exception”主“java.util.ConcurrentModificationException”

我试图从地图中删除值,当我尝试这个迭代时,我得到以下exception。 Exception in thread “main” java.util.ConcurrentModificationException 我的代码如下。 public static Map removeHolyday(Map daysMap,Map holydayMap){ Iterator workingDays = daysMap.entrySet().iterator(); while (workingDays.hasNext()) { Map.Entry workingDaysEntry = workingDays.next(); System.out.println(“Key = ” + workingDaysEntry.getKey() + “, Value = ” + workingDaysEntry.getValue()); Iterator holydays = daysMap.entrySet().iterator(); while (holydays.hasNext()) { Map.Entry holydayEntry = holydays.next(); if(workingDaysEntry.getKey().toString().equals(holydayEntry.getKey().toString())){ daysMap.remove(workingDaysEntry.getKey().toString()); } } } return daysMap; } […]

Java:如何在spring框架中声明嵌套映射?

例如,您如何申报三重地图,如: Map<String, Map<String, Map>>, with the keys being someKey1, someKey2, and someKey3 (true/false)? 我知道,直到这个 – 编辑: 好的,这就是我想要减少大量的if语句。 123: //some key 1 abc: //some key 2 true: //some key 3 a //some value false: //some key 3 b //some value 456: def: true: c false: d 谢谢你们。

使用具有generics优势的多种值类型映射

我想创建一个地图,它将提供generics的好处,同时支持多种不同类型的值。 我认为以下是通用集合的两个关键优势: 编写时间警告将错误的东西放入集合中 从集合中获取东西时无需进行强制转换 所以我想要的是一张地图: 它支持多个值对象, 检查放入地图的值(最好是在编译时) 知道从地图获取时的对象值。 使用generics的基本案例是: Map map = new HashMap(); // No type checking on put(); map.put(MyKey.A, “A”); map.put(MyKey.B, 10); // Need to cast from get(); Object a = map.get(MyKey.A); String aStr = (String) map.get(MyKey.A); 我找到了一种方法来解决第二个问题,通过创建一个AbstractKey,它由与此键关联的值类通用: public interface AbstractKey { } public enum StringKey implements AbstractKey{ A,B; } public enum IntegerKey […]

如何根据Map中的Integer值相对于O(n)时间内的其他值随机选择一个键?

如果我们有一个Map ,那么假设整数值代表“有多少”Ts。 因此,我想根据其Integer值统一选择T. 如果地图包含“a”= 4且“b”= 6的字符串,那么我想要它,以便选择40%的时间“a”并选择60%的时间“b”。 最重要的是,我在O(n)中喜欢这个,在我之前的例子中,n是两个 (不是十个)。 我最初创建了一个包含键的ArrayList,它包含了多少个值(并简单地返回任何随机索引),但这个过程不仅非常慢,而且对于Map代表的完全违反直觉。

Java Generics:通用映射(深层副本)的方法签名

我有一些Map ,它们本身可能再次包含Map (任何类型)。 我用签名写了一个方法: public static HashMap deepCopyHashMap(HashMap s); 但是,我现在想要概括这个代码以支持Map ,但仍然返回与参数类型相同的对象。 所以代替: public static HashMap deepCopyHashMap(HashMap s); public static CheckedMap deepCopyCheckedMap(CheckedMap s); public static TreeMap deepCopyTreeMap(TreeMap s); … etc. 我想要这样的东西: public static <K,V, M extends Map> M deepCopyMap(M s); 但是,这给了我: Multiple markers at this line – The type M is not generic; it cannot be […]