所以我想将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发出了警告.任何想法.非常感谢任何帮助
我被包裹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) 我正在使用 aLinkedHashMap<Integer, Integer>来存储 2D 游戏中图块上的图层值。较高的数字覆盖较低的数字。
在我的绘制函数中,我迭代设置的值并绘制每个值。这意味着我要(width * height * numLayers)多次拆箱价值观。我计划移植到 Android,因此我希望尽可能高效,但我认为这太多了?
我使用地图的原因是因为层数(键)很重要:4 以上的键是在玩家上方绘制的,等等。所以我经常需要跳过一堆键。
我可能可以只使用 an,int[10]因为我不需要那么多层,但是与我当前的 HashMap 相比,所有未使用的层都会占用 32 位,而我当前的 HashMap 可以有键 0、9,只占用 64 位位。
我得到类似的数据
{"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中两个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 或第三方库中是否有保留插入顺序的 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) 我正在创建一个servlet.Filter实现,其中我在将请求发送到servlet之前,基于IP地址在数据库中查找用户ID.
如果已经有来自同一IP地址的请求在数据库中查找,我希望我的过滤器将传入的请求存储到类似地图的对象中.然后当我从数据库得到响应时,我会将它应用于该IP地址的所有请求,并将它们发送到servlet的路上.
类似地图的对象需要同步,但也要保持插入顺序,这样一旦我找到用户ID,所有存储的请求"将按接收顺序处理".
通过API有一个LinkedHashMap可以维持订单正常但不同步的,它HashTable是同步的,但没有给出任何迹象表明它会保持正确的顺序.
LinkedHashTable我可以使用某种物品吗?
我使用的是Java 6.
我有一组固定的键值对,我正在初始化它 LinkedHashMap<String, Double>.
当我这样做时,插入顺序是否保持不变
LinkedHashMap.put(existingKey, newValue);
Run Code Online (Sandbox Code Playgroud)
确切地说,我的问题是,当我们使用该put方法更新密钥的值时,初始插入的顺序是否受到干扰?
如果是这样1)为什么?2)如何防止这种情况保留初始插入顺序?
我选择了LinkedHashMap,因为我想要一个支持键值对的集合并维护插入顺序.
TIA
我会保持简短,我有一个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 Call或Wrong Call输出.
我需要确保每次放置"foo"密钥时,都必须调用Foo()方法,而不是Boo().
显然,它并没有缓解我的"方法调用"问题.我怎样才能克服这个问题?我每次都必须调用正确的方法.我对这些反思很新,有什么我不应该做的,或者我做错了什么?或者有更好的方法来实现此方法调用?
编辑:我也试过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 ×10
linkedhashmap ×10
hashmap ×3
map ×3
android ×2
autoboxing ×1
equals ×1
java-6 ×1
java-stream ×1
list ×1
methods ×1
reflection ×1
synchronized ×1
unboxing ×1