在Perl中是否有类似于LinkedHashMap的数据结构?
或Perl中的LRU数据结构
更新:@TLP基本上我想要Hashtable数据结构,但我也可以保持键的顺序进入,在我处理列表中的键后删除键.
更新:@ccheneson Tie :: IxHash似乎不是我想要的,我想POP一个最旧的键,但tie :: ixHash弹出最新的键,我如何获得Tie :: IxHash中最旧的键值对?我想要一个队列结构(和哈希结构,我想以最简单的方式找到密钥),新密钥,值对继续进入,我保持进程最旧的密钥并删除最旧的密钥.
更新:@ FMc Tie :: IxHash是我需要的,Tie :: IxHash-> Shift()执行队列弹出Tie :: IxHash-> Push()执行队列推送,它是哈希结构,易于查找键.
谢谢大家.
由于LinkedHashMap/Set保持Collection中的条目顺序,因此它会导致性能稍低.我想知道为什么会这样.
我对jsp没有多少经验.在java中我能做到,但打开一个块<%%>并不好
LinkedHashMap我的代码中有一个:
protected LinkedHashMap<String, String> profileMap;
Run Code Online (Sandbox Code Playgroud)
我想要打印出来的所有按键profileMap.如何使用Iterator或循环?
具体来说,我想在"for each"循环中使用LinkedHashMap.例如,假设我创建了LinkedHashMap:
LinkedHashMap<String, Integer> someHash = new LinkedHashMap<String, Integer>();
Run Code Online (Sandbox Code Playgroud)
然后我填写一些东西:
someHash.put("One", new Integer(1));
someHash.put("Two", new Integer(2));
Run Code Online (Sandbox Code Playgroud)
现在我怎么能够通过并获得每一对?我想要的东西是:
for(<String, Integer> pair : someHash)
{
//Do stuff.
}
Run Code Online (Sandbox Code Playgroud)
但当然这不起作用.有没有一种简单的方法从哈希中检索"对"对象?或者我只需要遍历长度并分别获取值和键?另外,如果是这种情况,我真的应该使用不同的对象吗?
我LinkedHashMap<>在我的Android应用程序和问题中使用我想立即删除它中的几个条目.在Objective-C中有一个方法removeObjectsForKeys接受键的数组并删除与该数组中的键相对应的条目 - 是否有类似的东西在Java?或者我只能使用remove(Object key)和删除单个键的单个条目?
我测试SnakeYAML库来读取.yaml文档.我看过例2.27.来自http://yaml.org/spec/1.1/的发票,我得到了对象:
System.out.println(content);
Yaml yaml = new Yaml();
Object o = yaml.load(content);
Run Code Online (Sandbox Code Playgroud)
其中content是使用Files.readAllBytes从文件加载的String,encoding.decode(编码是StandardCharsets.UTF_8)
反射让我觉得o是java.util.LinkedHashMap的类型,我可以迭代它们:
Set entrySet = o.entrySet();
Iterator it = entrySet.iterator();
System.out.println("LinkedHashMap entries : ");
while (it.hasNext())
{
Object entry = it.next();
System.out.println(entry);
}
Run Code Online (Sandbox Code Playgroud)
反射返回该类型的条目是LinkedHashMap $ Entry.但问题是:内部类LinkedHashMap $ Entry是私有的,我不能声明这种类型的对象.如何从入口,迭代器或entrSet中获取对?
将LinkedHashMap迭代到第x个元素的最佳方法是什么?
for (Entry<String, Integer> entry : existingFile.entrySet() )
{
builder.append("{" + entry.getKey() + "," + entry.getValue() + "} ");
}
Run Code Online (Sandbox Code Playgroud)
这遍历所有元素,我怎么能阻止它在第5个元素?
我正进入(状态
java.lang.ClassCastException: java.util.HashMap cannot be cast to java.util.LinkedHashMap
Run Code Online (Sandbox Code Playgroud)
在LinkedHashMap<String, String> dataHashMap = (LinkedHashMap<String, String>) intent.getSerializableExtra("tests.test.MyApp.A.EXTRA_KEY");活动B的代码(相关部分)中.
在片段A中,我有以下检查:
Log.i(TAG, "THE TYPE OF THE MAP RETURNED FROM populateSelectedEntryList(selectedResultEntry) IS " +
populateSelectedEntryList(selectedResultEntry).getClass().getSimpleName()
+ ".");//******PRINTS LinkedHashMap**********************
Run Code Online (Sandbox Code Playgroud)其打印LinkedHashMap.
在活动B中,我有以下检查:
LinkedHashMap<String, String> dataHashMap = (LinkedHashMap<String, String>)intent.getSerializableExtra("tests.test.MyApp.A.EXTRA_KEY");//**********ClassCastException*****************
Run Code Online (Sandbox Code Playgroud)
其打印HashMap.
问题是为什么?为什么系统将LinkedHashMap转换为HashMap.当作为Serializable在intent中传递LinkedHashMap时,如何强制LinkedHashMap继续成为LinkedHashMap?
相关部分代码:
在片段A中,
public class A extends Fragment {
...
public void onListItemClick(...) {
Intent intent = new Intent(getActivity(), B.class);
...
intent.putExtra("tests.test.MyApp.A.EXTRA_KEY", populateSelectedEntryList(selectedResultEntry));
Log.i(TAG, "THE TYPE OF THE MAP RETURNED …Run Code Online (Sandbox Code Playgroud) java android classcastexception linkedhashmap android-intent
我有一个写入文本文件的代码,然后打印出在文本文件中找到每个单词的次数。它工作正常,但不区分大小写。而且我被卡住了。您能否提出建议?
Map<String, Integer> map = new LinkedHashMap<>();
for (String w : data) {
Integer n = map.get(w.);
n = (n == null) ? 1 : ++n;
map.put(w, n);
}
System.out.println(map);
Run Code Online (Sandbox Code Playgroud)
这是代码。感谢您的时间。