标签: linkedhashmap

LinkedHashMap.putAll()以什么顺序插入元素?

我正在阅读Javadoc for LinkedHashMap,其中提到了它:

putAll方法为指定映射中的每个映射生成一个条目访问,其顺序为指定映射的条目集迭代器提供键-值映射。

我的问题是,“每个映射一个入口访问”是什么意思。如果有人可以帮助提供一个例子来阐明这一点,将不胜感激。

java linkedhashmap

6
推荐指数
1
解决办法
4829
查看次数

在Java 8中迭代HashMap时出现稳定的元素排序问题

某些测试用例在我的应用程序中失败,这取决于元素的插入顺序.它曾经在Java 7中运行良好但是这个问题在升级到Java 8之后就开始了.在搜索互联网时我在一篇文章中找到了这个 :

Java 8包含对HashSet/Map迭代顺序的一些可能的更改:

有些人可以建议我 - 我怎样才能以与插入顺序相同的顺序迭代Map中的对象,考虑到我仍然在我的开发环境中使用Java 1.8?

是的,当然HashMap从未保证可以按相同的顺序检索对象,但是它曾经在java 7中工作.

LinkedHashMap工作,落实呢?

java hashmap linkedhashmap java-8

6
推荐指数
1
解决办法
1038
查看次数

序列化/反序列化LinkedHashMap(android)java

所以我想将LinkedHashMap传递给intent.

//SEND THE MAP
Intent singlechannel = new Intent(getBaseContext(),singlechannel.class);
singlechannel.putExtra("db",shows1);//perase to
startActivity(singlechannel);

//GET THE MAP
LinkedHashMap<String,String> db = new LinkedHashMap<String,String>();   
db=(LinkedHashMap<String,String>) getIntent().getSerializableExtra("db");
Run Code Online (Sandbox Code Playgroud)

这个就像HashMap的魅力一样.但是使用LinkedHashMap我遇到了一个问题,我在这里遇到了运行时错误

  db=(LinkedHashMap<String,String>) getIntent().getSerializableExtra("db");
Run Code Online (Sandbox Code Playgroud)

我没有得到HashMap的错误.

我还收到一个警告"类型安全:从Serializable到LinkedHashMap的未经检查的强制转换"但我也对HashMap发出了警告.任何想法.非常感谢任何帮助

我也刚看到这个. https://issues.apache.org/jira/browse/HARMONY-6498

java serialization android linkedhashmap

5
推荐指数
1
解决办法
9825
查看次数

如何从LinkedHashMap中的特定键开始迭代?

如果我有数据结构

Stock
{
  String Symbol;
  LinkedHashMap<Date,Double> DateForPrice;  
}
Run Code Online (Sandbox Code Playgroud)

我知道在LinkedHashMap中,我可以获得特定日期的股票价格,而无需遍历整个列表.

但是,如果我想从特定日期开始迭代DateForPrice的LinkedHashMap,有没有办法在不遍历整个列表的情况下执行它?

java traversal linkedhashmap

5
推荐指数
2
解决办法
2201
查看次数

LinkedHashMap的impl - 使用双链表,而不是单链表; 为什么

正如我所提到的LinkedHashMap的文档,它说,内部维护双链表(DLL)

我试图理解为什么选择DLL而不是S(ingle)LL我用DLL获得的最大优势是向后遍历,但我没有看到LinkedHashMap()利用这个优势的任何用例,因为之前没有( )Iterable接口中的next()类操作.

任何人都可以解释为什么是DLL,而不是SLL?

linkedhashmap

5
推荐指数
1
解决办法
832
查看次数

ConcurrentModificationException甚至在LinkedHashMap上使用Collections.sychronizedMap

我在我的类中使用了一个Map对象,我已经与LinkedHashMap的Collections.synchronizedMap()同步,如下所示:

private GameObjectManager(){
        gameObjects = Collections.synchronizedMap(new LinkedHashMap<String, GameObject>());
}
Run Code Online (Sandbox Code Playgroud)

我在这个函数的第三行得到一个并发修改异常:

public static void frameElapsed(float msElapsed){
    if(!INSTANCE.gameObjects.isEmpty()){
        synchronized(INSTANCE.gameObjects){
            for(GameObject object : INSTANCE.gameObjects.values()){...}
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在迭代Map的所有其他位置,我按照文档同步地图.

我的类中还有其他函数使用这个Map(同步的!)和put()和remove()对象,但这应该无关紧要.我究竟做错了什么?请询问更多代码,不知道还能提供什么.

哦,和日志消息:

08-20 15:55:30.109: E/AndroidRuntime(14482): FATAL EXCEPTION: GLThread 1748
08-20 15:55:30.109: E/AndroidRuntime(14482): java.util.ConcurrentModificationException
08-20 15:55:30.109: E/AndroidRuntime(14482):    at     java.util.LinkedHashMap$LinkedHashIterator.nextEntry(LinkedHashMap.java:350)
08-20 15:55:30.109: E/AndroidRuntime(14482):    at     java.util.LinkedHashMap$ValueIterator.next(LinkedHashMap.java:374)
08-20 15:55:30.109: E/AndroidRuntime(14482):    at     package.GameObjectManager.frameElapsed(GameObjectManager.java:247)
08-20 15:55:30.109: E/AndroidRuntime(14482):    at     package.GamekitInterface.render(Native Method)
08-20 15:55:30.109: E/AndroidRuntime(14482):    at     package.GamekitInterface.renderFrame(GamekitInterface.java:332)
08-20 15:55:30.109: E/AndroidRuntime(14482):    at     com.qualcomm.QCARSamples.ImageTargets.GameEngineInterface.onDrawFrame(GameEngineInterface.java:107)
08-20 15:55:30.109: E/AndroidRuntime(14482):    at     android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1516)
08-20 15:55:30.109: E/AndroidRuntime(14482):    at     android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)
Run Code Online (Sandbox Code Playgroud)

java multithreading synchronized linkedhashmap concurrentmodification

5
推荐指数
1
解决办法
3282
查看次数

LinkedHashMap$Entry 不能转换为 java.util.LinkedHashMap

我被包裹LinkedHashMap<String, LinkedHashMap<Date, Double>>在一个列表中;

List<LinkedHashMap<String, LinkedHashMap<Date, Double>>> list = new ArrayList(mainCodesMap.entrySet());
Run Code Online (Sandbox Code Playgroud)

mainCodeMap是类型Map<String, Map<Date, Double>>

问题是列表没有问题,但是,当我尝试在 for 循环中按索引获取列表元素时;

for (int i = 0; i < correMatrix.length; i++) {

    LinkedHashMap<String, LinkedHashMap<Date, Double>> entryRow = list.get(i);
    LinkedHashMap<Date, Double> entryRowData = (LinkedHashMap<Date, Double>) entryRow.values();
    ..
    ..
}
Run Code Online (Sandbox Code Playgroud)

jvm throwsClassCastException说;

java.lang.ClassCastException: java.util.LinkedHashMap$Entry cannot be cast to java.util.LinkedHashMap
Run Code Online (Sandbox Code Playgroud)

java list map classcastexception linkedhashmap

5
推荐指数
1
解决办法
2万
查看次数

关于自动装箱,Java 中 Map&lt;Integer, Integer&gt; 的有效替代方案?

我正在使用 aLinkedHashMap<Integer, Integer>来存储 2D 游戏中图块上的图层值。较高的数字覆盖较低的数字。

在我的绘制函数中,我迭代设置的值并绘制每个值。这意味着我要(width * height * numLayers)多次拆箱价值观。我计划移植到 Android,因此我希望尽可能高效,但我认为这太多了?

我使用地图的原因是因为层数(键)很重要:4 以上的键是在玩家上方绘制的,等等。所以我经常需要跳过一堆键。

我可能可以只使用 an,int[10]因为我不需要那么多层,但是与我当前的 HashMap 相比,所有未使用的层都会占用 32 位,而我当前的 HashMap 可以有键 0、9,只占用 64 位位。

java autoboxing android unboxing linkedhashmap

5
推荐指数
1
解决办法
1775
查看次数

从LinkedHashMap的keySet()创建的ArrayList是否保留了插入顺序?

我得到类似的数据

{"ABC的员工1","ABCX"},{"ABC的员工2","ABCY"},{"ABC的员工3","ABCZ"}

从数据库到RefCursor.

我有一个案例,我需要保留从数据库中读取数据的顺序.由于我的数据是一种"键值",我想到了使用了一个Map有序的实现.因此选择了LinkedHashMap

//defined as a static map inside a common utlity class
public class Common{
public static final LinkedHashMap<String, String> empMap = new   LinkedHashMap<String, String>();
}

//rs is the resultset
if (rs != null) {
            while (rs.next()) {
                key = rs.getString("name_text");
                value = rs.getString("id");
                Common.empMap.put(key, value);
            }
}
Run Code Online (Sandbox Code Playgroud)

我必须按照从数据库(Cursor)检索它的顺序将密钥传递给客户端.

List<String> empList = new ArrayList<String>(Common.empMap.keySet());
Run Code Online (Sandbox Code Playgroud)

keySet() - 文档说"返回此映射中包含的键的Set视图.该集由映射支持,因此对映射的更改将反映在集合中,反之亦然"

我所期待的是,由于ArrayList也是一个有序集合,我应该以与检索/插入密钥相同的方式获取密钥Map.

当我做一个示例测试程序时,我得到了预期的结果.

public class LinkedMap {    
    public static void main(String[] args) { …
Run Code Online (Sandbox Code Playgroud)

java linkedhashmap

5
推荐指数
1
解决办法
1072
查看次数

Java中的链接映射,如果键的顺序不同,则不相等

Java 或第三方库中是否有保留插入顺序的 Map(类似于 LinkedHashMap),它还会在比较(equals()hashCode()方法)期间检查键的顺序?所以这Map(a => 1, b => 2)会不同于Map(b => 2, a => 1).

与下面类似,但我不想重新发明和维护轮子:

public class EqualityStrictLinkedMap<K, V> extends ForwardingMap<K, V>
{
    ...

    @Override
    public boolean equals(Object o)
    {
        if (!(o instanceof Map))
            return false;
        Map<K, V> that = (Map<K, V>) o;
        return Iterables.elementsEqual(entrySet(), that.entrySet());
    }

    @Override
    public int hashCode()
    {
        int h = 1;
        for (Map.Entry<K, V> entry: entrySet()) {
            h = (h*31 + Objects.hashCode(entry.getKey()))*31 + Objects.hashCode(entry.getValue());
        }
        return h; …
Run Code Online (Sandbox Code Playgroud)

java linkedhashmap

5
推荐指数
0
解决办法
298
查看次数