从哈希表Java获取具有指定值的对象
我有一个带有(字符串,对象)的哈希表。我必须按键字符串的长度分隔所有对象,并创建一个长度相同的字符串数组数组。有人能指导我如何做到这一点吗? 到目前为止,我的代码是:从哈希表Java获取具有指定值的对象,java,data-structures,hashtable,Java,Data Structures,Hashtable,我有一个带有(字符串,对象)的哈希表。我必须按键字符串的长度分隔所有对象,并创建一个长度相同的字符串数组数组。有人能指导我如何做到这一点吗? 到目前为止,我的代码是: Set<String> keys = words.keySet(); ArrayList<ArrayList<Word>> outer = new ArrayList<ArrayList<Word>>(); ArrayList<Word> inner = ne
Set<String> keys = words.keySet();
ArrayList<ArrayList<Word>> outer = new ArrayList<ArrayList<Word>>();
ArrayList<Word> inner = new ArrayList<Word>();
for(String key: keys) {
for (int i=0; i< 15; i++) {
if (key.length() == i) {
inner.add(words.get(key));
}
outer.add(i, inner);
}
}
Set keys=words.keySet();
ArrayList outer=新的ArrayList();
ArrayList内部=新的ArrayList();
用于(字符串键:键){
对于(int i=0;i<15;i++){
if(key.length()==i){
inner.add(words.get(key));
}
外部。添加(i,内部);
}
}
循环的方式效率低下,因为您可能没有很多特定大小的单词,因此您将不必要地根据每个长度的i
检查每个单词的长度。您只需浏览一次单词列表,然后使用地图将单词与表示其长度的键相关联,然后在最后整理列表
试试这个:
Map<Integer, List<String>> sizeMap = new HashMap<>();
for (String key: keys) {
int length = key.length();
if (sizeMap.containsKey(length)) {
// If we already have a list initialized, add the word
List<String> mWords = sizeMap.get(length);
mWords.add(key);
} else {
// Otherwise, add an empty list so later we don't try appending to null
sizeMap.put(length, new ArrayList<>());
}
}
// Convert the map to a list of lists
for (List<String> sizeGrouping : sizeMap.values()) {
outer.add(sizeGrouping);
}
Map sizeMap=newhashmap();
用于(字符串键:键){
int length=key.length();
if(尺寸映射容器(长度)){
//如果我们已经初始化了一个列表,请添加单词
List mWords=sizeMap.get(长度);
添加(键);
}否则{
//否则,添加一个空列表,这样以后我们就不会尝试追加null
sizeMap.put(长度,new ArrayList());
}
}
//将地图转换为列表列表
对于(列表大小组合:sizeMap.values()){
外部。添加(大小组合);
}
最终输出中有多少实际阵列?你在这个问题上做过什么工作吗?有一个数组,里面有多个数组。那么问题到底是什么?你的问题得到了回答吗?