我把一个字符串数组元素是一个映射,其中字符串数组的元素是键,字的频率是值,例如:
String[] args = {"if","it","is","to","be","it","is","up","me","to","delegate"};
Run Code Online (Sandbox Code Playgroud)
然后地图会有像这样的条目 [ if:1, it:2 .... ]
Set<String> keys = m.keySet();
System.out.println("keyset of the map : "+keys);
Run Code Online (Sandbox Code Playgroud)
打印所有键: "if","it","is","to","be","it","is","up","me","to","delegate"
Set<Map.Entry<String, Integer>> entrySet = m.entrySet();
Iterator<Map.Entry<String, Integer>> i = entrySet.iterator();
while(i.hasNext()){
Map.Entry<String, Integer> element = i.next();
System.out.println("Key: "+element.getKey()+" ,value: "+element.getValue());
}
Run Code Online (Sandbox Code Playgroud)
打印所有键值对:
使用条目集打印所有值:
Key: if ,value: 1
Key: it ,value: 2
Key: is ,value: 2
Key: to ,value: 2
Key: be ,value: 1
Key: up ,value: 1
Key: me ,value: 1
Key: delegate ,value: 1
Run Code Online (Sandbox Code Playgroud)
但是下面的代码块应该打印与上面完全相同的输出,但它不会:
Iterator<String> …Run Code Online (Sandbox Code Playgroud) 我需要知道如何在lua中检索表的键集.例如,如果我有下表:
tab = {}
tab[1]='a'
tab[2]='b'
tab[5]='e'
Run Code Online (Sandbox Code Playgroud)
我想要检索一个如下所示的表:
keyset = {1,2,5}
Run Code Online (Sandbox Code Playgroud) 我有以下Java代码:
public void myMethod (final Map pFeatureGroupsFromPackage) {
final Set<String> keys = pFeatureGroupsFromPackage.keySet();
for (final String key : keys) {
tmpList = (List<FeatureKey>) pFeatureGroupsFromPackage.get(key);
// do whatever
}
}
Run Code Online (Sandbox Code Playgroud)
我收到"findBugs"的警告,告诉您:
方法myMethod使得无效地使用keySet迭代器而不是entrySet迭代器.警告在tmpList作业完成.
我不明白为什么这样效率低下.事实上,keys列表只计算一次.任何意见?谢谢.
我有以下代码,但我看到在迭代地图键时从地图检索值keySet()是一个错误,即使使用findBugs我得到警告WMI_WRONG_MAP_ITERATOR
for(String elementId : mapElements.keySet()){
element = mapElements.get(elementId);
doSomething(element);
}
Run Code Online (Sandbox Code Playgroud)
那么为什么这不好,我该如何解决呢?
谢谢.
如果我遍历WeakHashMap的密钥集,我是否需要检查空值?
WeakHashMap<MyObject, WeakReference<MyObject>> hm
= new WeakHashMap<MyObject, WeakReference<MyObject>>();
for ( MyObject item : hm.keySet() ) {
if ( item != null ) { // <- Is this test necessary?
// Do something...
}
}
Run Code Online (Sandbox Code Playgroud)
换句话说,当我迭代它们时,是否可以收集WeakHashMap的元素?
编辑
为了这个问题,可以假设null在哈希映射中没有添加任何条目.
关于Map<K,V>界面:
为什么keySet()返回Set支持remove操作但不支持add()和addAll()操作?
Mac OS 上的 JDK 8,查看 HashMap.java 中的以下代码:
public Set<K> keySet() {
Set<K> ks = keySet;
if (ks == null) {
ks = new KeySet();
keySet = ks;
}
return ks;
}
Run Code Online (Sandbox Code Playgroud)
对返回的 ks 的任何更改都将反映在 keySet 中,因为它们始终指向相同的底层集合,如果这是真的,可以写成:
public Set<K> keySet() {
if (keySet == null) {
keySet = new KeySet();
}
return keySet;
}
Run Code Online (Sandbox Code Playgroud)
两个代码片段的行为是否相同?
如果是这样,为什么HashMap使用第一个变体而不是第二个变体?
很困惑。新建项目,添加以下代码:
import org.json.JSONObject;
JSONObject jsonObject = new JSONObject();
jsonObject.keys();
jsonObject.keySet();
Run Code Online (Sandbox Code Playgroud)
.keys()方法按其应有的方式解析。
.keySet()方法突出显示红色,AndroidStudio 给出“无法解析方法 keyset()”错误。
如果我转到keys()定义,这里它们都是公开的:http://goloskok.com/u/2015-07-01_16-41-08.jpg
我究竟做错了什么?
我的任务即将结束,我被指示要做的最后一件事是:
我已经使用 keySet() 方法打印出我的 HashMap 中的键数,但我还没有做的是找到 HashMap 中每个单词的长度,然后打印出每个单词中的字符数。我目前不确定我应该如何做到这一点。我假设我会使用一段时间的 for 循环来遍历我已经完成的 keySet(),然后使用类似 .length() 的方法来找出每个单词的长度,然后以某种方式将其打印出来?
到目前为止,这是我的相关代码:
主班
package QuestionEditor;
import java.util.Set;
public class Main{
public static void main (String[] args) {
WordGroup secondWordGroup = new WordGroup ("When-you-play-play-hard-when-you-work-dont-play-at-all");
Set<String> set = secondWordGroup.getWordCountsMap().keySet();
System.out.println("set : " + set + "\n");
for(String key : set)
{
System.out.println(key);
}
}
}
Run Code Online (Sandbox Code Playgroud)
世界组类
package QuestionEditor;
import java.util.HashMap;
public class WordGroup {
String word;
// Creates constructor which stores a string value in …Run Code Online (Sandbox Code Playgroud) 高性能分页的常见解决方案是使用索引字段,从前一页的最后一个值开始每个新“页面”。例如,对于这样的数据集(假设 Category 和 ID 是主键):
Category | ID | Name
Red | 10 | Bob Jones
Red | 14 | Sam Smith
Red | 16 | Jill White
Blue | 10 | Mike Green
Blue | 16 | Mary Brown
Run Code Online (Sandbox Code Playgroud)
假设(相当小的)页面大小为 1,如果我们要返回所有Red类别记录(假设 ORDER BY Category, ID):
SELECT * FROM table WHERE Category='Red' AND ID>'00' (1st page, returns Bob Jones)
SELECT * FROM table WHERE Category='Red' AND ID>'10' (2nd page, returns Sam Smith)
SELECT * FROM table WHERE Category='Red' …Run Code Online (Sandbox Code Playgroud) keyset ×10
java ×8
hashmap ×2
iteration ×2
android ×1
collections ×1
dictionary ×1
java-8 ×1
json ×1
lua ×1
lua-table ×1
null ×1
optimization ×1
orientdb ×1
pagination ×1
set ×1
sql ×1
sql-server ×1
weakhashmap ×1