相关疑难解决方法(0)

如何有效地迭代Java Map中的每个条目?

如果我有一个Map用Java 实现接口的对象,并希望迭代其中包含的每一对,那么通过地图的最有效方法是什么?

元素的排序是否取决于我对界面的具体映射实现?

java iteration collections dictionary

3113
推荐指数
41
解决办法
238万
查看次数

实现Map并保持插入顺序的Java类?

我正在寻找一个具有键值关联的java类,但不使用哈希.这是我目前正在做的事情:

  1. 添加值到a Hashtable.
  2. 获取一个迭代器Hashtable.entrySet().
  3. 迭代所有值并:
    1. 获取一个Map.Entry迭代器.
    2. Module根据值创建类型(自定义类)的对象.
    3. 将类添加到JPanel.
  4. 显示面板.

这个问题是我无法控制返回值的顺序,所以我不能以给定的顺序显示值(不对代码进行硬编码).

我会使用一个ArrayListVector为此,但稍后在代码中我需要抓取Module给定Key 的对象,我无法使用ArrayListVector.

有没有人知道一个可以执行此操作的免费/开源Java类,或者Hashtable根据添加时间来获取值的方法?

谢谢!

java dictionary key-value

438
推荐指数
5
解决办法
24万
查看次数

迭代并从地图中删除

我在做:

for (Object key : map.keySet())
    if (something)
        map.remove(key);
Run Code Online (Sandbox Code Playgroud)

它引发了一个ConcurrentModificationException,所以我将其更改为:

for (Object key : new ArrayList<Object>(map.keySet()))
    if (something)
        map.remove(key);
Run Code Online (Sandbox Code Playgroud)

这个,以及修改地图的任何其他过程都在同步块中.

有更好的解决方案吗?

如果没有人想出一个更好的解决方案,首先要说没有得到勾号;)

java

243
推荐指数
7
解决办法
22万
查看次数

Android - 从HashMap获取价值

我试图在Android上搜索HashMap,但遇到问题:

考虑这个例子:

HashMap<String, String> meMap=new HashMap<String, String>();
meMap.put("Color1","Red");
meMap.put("Color2","Blue");
meMap.put("Color3","Green");
meMap.put("Color4","White");
Run Code Online (Sandbox Code Playgroud)

现在我想迭代它并获得每种颜色的值,并希望在"Toast"中显示.我该如何显示它?

java android hashmap android-widget

75
推荐指数
4
解决办法
17万
查看次数

LinkedHashMap中的entrySet()是否也保证了订单?

我正在使用linkedHashMap来保证当有人试图访问它时的顺序.但是,当需要迭代它时,是否使用entrySet()返回键/值对保证顺序?迭代时不会进行任何更改.

编辑:此外,迭代通过其键并调用get迭代地图是否有任何不利影响?

java linkedhashmap

67
推荐指数
1
解决办法
3万
查看次数

如何在哈希表中保持元素的顺序

我有一个哈希表.values()方法以某种顺序返回值,这些顺序与我插入的顺序不同.如何以与插入时相同的顺序获取值?使用LinkedHashmap是一种替代方法,但它不是同步的.

java hashtable linkedhashmap

22
推荐指数
1
解决办法
3万
查看次数

Java中的有序列表映射实现

我想知道是否有一个类实现了Java中的接口MapList接口.

我有一个主要是数据结构Map.我将字符串(ID)映射到Images.但是在我的代码的特定部分,我需要向用户提供所有可用的IDed Images.到目前为止,唯一的方法就是这样写:

for (String id : myMap.keySet()) {
    // get the image like this "myMap.get(id)" 
}
Run Code Online (Sandbox Code Playgroud)

所以有一个实现两者的类会很好Map,List所以我可以简单地写:

for (Image img : myMap) {
  // the image is img
}
Run Code Online (Sandbox Code Playgroud)

有谁知道这样的实现?

编辑:在查看答案(这些都是正确的,投票)后,我现在意识到我还需要对地图进行排序.当我说"排序"时,我的意思是我希望它以特定的顺序获得值,我可以修改它.我知道这不是原来的问题,但我意识到我需要这个.

编辑2:我似乎优柔寡断.我需要的是有序地图,而不是有序地图.对不起,人们感到困惑.

java list map

19
推荐指数
3
解决办法
3万
查看次数

维护HashMap中的顺序

我有一个列表,我转换为地图做一些工作.之后,我将地图再次转换回列表,但这次订单是随机的.我需要在第二个列表中保留相同的初始订单.

显而易见的原因是HashMap没有维护顺序.但我需要做一些事情才能做到.我无法更改Map实现.我该怎么做?

考虑给定的代码:

import java.util.*;
public class Dummy {

public static void main(String[] args) {
    System.out.println("Hello world !");
    List<String> list = new ArrayList<String>();
    list.add("A");list.add("B");list.add("C");
    list.add("D");list.add("E");list.add("F");

    Map<String,String> map = new HashMap<String, String>();

    for(int i=0;i<list.size();i=i+2)
        map.put(list.get(i),list.get(i+1));

    // Use map here to do some work

    List<String> l= new ArrayList<String>();
    for (Map.Entry e : map.entrySet()) {
        l.add((String) e.getKey());
        l.add((String) e.getValue());
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

对于ex - 最初,当我打印列表元素时,它打印出来

A B C D E F 
Run Code Online (Sandbox Code Playgroud)

现在,当我打印元素时List l,它会打印出来

E F A B C D
Run Code Online (Sandbox Code Playgroud)

java

17
推荐指数
2
解决办法
3万
查看次数