标签: linkedhashmap

序列化/反序列化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$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中检查LinkedHashMaps的相等性 - 还考虑了插入顺序?

我想检查Java中两个LinkedHashMaps的相等性.

equals()-方法位于AbstractMap和只检查并使用相同的密钥和值条目存在于比较列表.因此,不检查插入顺序:

package com.stackoverflow.tests;

import java.util.LinkedHashMap;

public class LinkedHashMapEqualsTest {

  public static void main(String[] args) {
    LinkedHashMap<String, String> lhm1 = new LinkedHashMap<String, String>();
    lhm1.put("A", "1");
    lhm1.put("B", "2");
    lhm1.put("C", "3");
    LinkedHashMap<String, String> lhm2 = new LinkedHashMap<String, String>();
    lhm2.put("A", "1");
    lhm2.put("B", "2");
    lhm2.put("C", "3");
    LinkedHashMap<String, String> lhm3 = new LinkedHashMap<String, String>();
    lhm3.put("A", "1");
    lhm3.put("C", "3");
    lhm3.put("B", "2");
    LinkedHashMap<String, String> lhm4 = new LinkedHashMap<String, String>();
    lhm4.put("A", "1");
    lhm4.put("B", "2");
    LinkedHashMap<String, String> lhm5 = new LinkedHashMap<String, String>();
    lhm5.put("A", "2");
    lhm5.put("B", …
Run Code Online (Sandbox Code Playgroud)

java equals linkedhashmap

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

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
查看次数

是否有同步的AND排序地图对象(LinkedHashTable)?

我正在创建一个servlet.Filter实现,其中我在将请求发送到servlet之前,基于IP地址在数据库中查找用户ID.

如果已经有来自同一IP地址的请求在数据库中查找,我希望我的过滤器将传入的请求存储到类似地图的对象中.然后当我从数据库得到响应时,我会将它应用于该IP地址的所有请求,并将它们发送到servlet的路上.

类似地图的对象需要同步,但也要保持插入顺序,这样一旦我找到用户ID,所有存储的请求"将按接收顺序处理".

通过API有一个LinkedHashMap可以维持订单正常但不同步的,它HashTable是同步的,但没有给出任何迹象表明它会保持正确的顺序.

LinkedHashTable我可以使用某种物品吗?

我使用的是Java 6.

java map synchronized linkedhashmap java-6

4
推荐指数
1
解决办法
3201
查看次数

如果我们为Linkedhashmap中的现有密钥"添加"和新值,会发生什么

我有一组固定的键值对,我正在初始化它 LinkedHashMap<String, Double>.

当我这样做时,插入顺序是否保持不变

LinkedHashMap.put(existingKey, newValue);
Run Code Online (Sandbox Code Playgroud)

确切地说,我的问题是,当我们使用该put方法更新密钥的值时,初始插入的顺序是否受到干扰?

如果是这样1)为什么?2)如何防止这种情况保留初始插入顺序?

我选择了LinkedHashMap,因为我想要一个支持键值对的集合并维护插入顺序.

TIA

java hashmap map linkedhashmap data-structures

4
推荐指数
1
解决办法
1685
查看次数

反射 - 从HashMap获取不同的结果 - LinkedHashMap

我会保持简短,我有一个Dog类如下:

public class Dog 
{
   public void Foo() 
   { 
      System.out.println("Right Call");
   }

   public void Boo()
   {
     System.out.println("Wrong Call");
   }
}
Run Code Online (Sandbox Code Playgroud)

和以下主要方法:

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

Dog d = new Dog();

Method[] method = d.getClass().getMethods();

map.put("foo", method[0]);

Method a = map.get("foo");

try {
    a.invoke(d, null);
} catch (IllegalAccessException | IllegalArgumentException
        | InvocationTargetException e) {
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

每当我再次运行它时,它只是任意给出Right CallWrong Call输出.

我需要确保每次放置"foo"密钥时,都必须调用Foo()方法,而不是Boo().

显然,它并没有缓解我的"方法调用"问题.我怎样才能克服这个问题?我每次都必须调用正确的方法.我对这些反思很新,有什么我不应该做的,或者我做错了什么?或者有更好的方法来实现此方法调用?

编辑:我也试过LinkedHashMap,但结果是一样的.

谢谢.

java reflection methods hashmap linkedhashmap

4
推荐指数
2
解决办法
235
查看次数

将EntrySet流收集到LinkedHashMap

我想收集流到LinkedHashMap<String, Object>.

我有一个JSON存储的资源LinkedHashMap<String, Object> resources.然后我JSON通过流式传输EntrySet此地图来过滤掉元素.目前我正在收集流的元素到常规HashMap.但在此之后我将其他元素添加到地图中.我希望这些元素处于插入的顺序中.

final List<String> keys = Arrays.asList("status", "createdDate");

Map<String, Object> result = resources.entrySet()
        .stream()
        .filter(e -> keys.contains(e.getKey()))
        .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));

result.put("date", "someDate");
return result;
Run Code Online (Sandbox Code Playgroud)

这就是为什么我想收集流到一个LinkedHashMap<String, Object>.我怎样才能做到这一点?

java hashmap linkedhashmap java-stream

4
推荐指数
2
解决办法
2840
查看次数