假设我有一个返回HashMap对象的Java方法.
因为LinkedHashMap是HashMap的子类,所以我可以从这个方法返回一个LinkedHashMap就好了.
在下一个"读取"操作(不添加/删除/修改K/V对)时,迭代结果方法的键(返回HashMap)将按照与原始LinkedHashMap相同的顺序进行,即使HashMap也是如此缺乏关键链接?
与HashMap不同,LinkedHashMap中的顺序很重要.这里的顺序是插入顺序.
假设我有一个如下所示的LinkedHashMap(从上到下排序,左边部分是键,右边部分是值):
1: "一"
2: "两个"
3: "三"
4: "四"
然后我有一个键列表,其中包含,比方说,(3,1).
我想要做的是按顺序遍历LinkedHashMap并选择其键位于列表中的条目.
所以我想要的结果是(1仍然在3之前,因为这是过滤前的顺序):
1: "一"
3: "三"
这是我的代码:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class SelectCertainEntriesFromLinkedHashMap {
public static void main(String args[]) {
Map<Integer,String> linkedHashMap = new LinkedHashMap<Integer,String>();
linkedHashMap.put(1, "One");
linkedHashMap.put(2, "Twe");
linkedHashMap.put(3, "Three");
linkedHashMap.put(4, "Four");
List<Integer> list = new ArrayList<Integer>();
list.add(3);
list.add(1);
Map<Integer,String> selectedlinkedHashMap = new LinkedHashMap<Integer,String>();
//will this iterator iterate the keys in the order of the map (1, 2, 3, 4)? Or …Run Code Online (Sandbox Code Playgroud) 我有一个扩展LinkedHashMap的类(EntireFile).我尝试施放:
EntireFile old = (EntireFile) functionReturningLinkedHashMap();
Run Code Online (Sandbox Code Playgroud)
它会抛出异常消息:"java.util.LinkedHashMap不能转换为com.gmail.maximsmol.YAML.GroupMap".
public class EntireFile extends LinkedHashMap<String, GroupMap>
public class GroupMap extends LinkedHashMap<String, CategoryMap>
public class CategoryMap extends LinkedHashMap<String, LinkedHashMap<String, Integer>>
Run Code Online (Sandbox Code Playgroud)
请帮我解决错误!
我有这个LinkedHashMap列表怎么可以订购值?
List<LinkedHashMap<String, Object>> list = more "key:value"......
Run Code Online (Sandbox Code Playgroud)
例如,在我的列表中,我有:
[{"field1": "z", "field2":"a"},
{"field1" : "b", "field2":"x"}]
Run Code Online (Sandbox Code Playgroud)
我想要基于"field1"键的值的顺序,例如:
[{"field1": "b", "field2":"x"},
{"field1" : "z", "field2":"a"}]
Run Code Online (Sandbox Code Playgroud)
我做了这堂课:
public class OrderComparator implements Comparator {
String field;
public OrderComparator (String field){
this.field = field;
}
@Override
public int compare(Object obj1, Object obj2) {
LinkedHashMap<String, Object> a = (LinkedHashMap<String, Object>) obj1;
LinkedHashMap<String, Object> b = (LinkedHashMap<String, Object>) obj2;
return a.get(this.field).toString().compareTo(b.get(this.field).toString());
}
}
Run Code Online (Sandbox Code Playgroud)
并且:
Collections.sort(list, new OrderComparator(sortColumn));
Run Code Online (Sandbox Code Playgroud)
是正确的?谢谢大家!!!
我对地图有各种疑问:
我一直在阅读API文档,但由于我是初学者,在编程方面我很难理解它.
是否可以从中获取值列表HashMap作为参考
class MyCustomObject {
String name;
Integer id;
MyCustomObject(String name, Integer id){
this.name = name;
this.id = id;
}
}
Run Code Online (Sandbox Code Playgroud)
HashMap<Integer, MyCustomObject> map = new LinkedHashMap<>();
map.put (1, new MyCustomObject("abc",1));
map.put (2, new MyCustomObject("xyz",2));
List<MyCustomObject> list = new ArrayList<>(map.values());
Log.i(TAG,"************ List from HashMap ************");
for (MyCustomObject s : list) {
Log.i(TAG,"name = "+s.name);
}
list.set(0,new MyCustomObject("temp",3));
Log.i(TAG,"************ List from HashMap after update ************");
for (MyCustomObject s : list) {
Log.i(TAG,"name = "+s.name);
}
Log.i(TAG,"************ List from HashMap ************"); …Run Code Online (Sandbox Code Playgroud) 我正在尝试从我的LinkedHashMap中过滤出不必要的null值。但是,实际上并没有删除这些值。
变量声明
Map<String,Object> dataDictionary = new LinkedHashMap<>();
Run Code Online (Sandbox Code Playgroud)
使用filter方法后,在sysout.print(dataDictionary)返回的内容的一小部分。
[industryCodes=<null>,regionCodes=<null>,andKeywords=false,id=
<null>,resultsPerPage=20,keywords=<null>,omitKeywords=<null>}
Run Code Online (Sandbox Code Playgroud)
Java代码
dataDictionary= dataDictionary.entrySet()
.stream()
.filter(entry -> entry.getValue()!=null)
.collect(Collectors.toMap(Map.Entry::getKey,
Map.Entry::getValue));
Run Code Online (Sandbox Code Playgroud)
期望空值及其键将被删除,但这似乎没有发生。
这实际上不是一个普遍的问题,但是是的。我在HackerRank上遇到了这段代码,通过理解这段代码我感到很困惑,它确实使用HashMap检查了数组中元素的唯一性。
现在给您一个见解,我知道如何做到这一点,这也很容易。但是这段代码是不同的,我真的需要学习它的实际功能。任何帮助表示赞赏。
int[] seq = new int[]{3,2,1,3};
Integer[] tmp = new Integer[seq.length];
for (int i = 0; i < seq.length; ++i) {
tmp[i] = Integer.valueOf(seq[i]);
}
/* THIS PIECE OF CODE, HOW THIS WORKS AND WHAT IT DOES???*/
if (!((new LinkedHashSet<Integer>(Arrays.asList(tmp))).size() == seq.length)) {
throw new AssertionError("not all values are unique");
}
Run Code Online (Sandbox Code Playgroud)
我所能做出的就是将数组转换为列表 tmp
Arrays.asList(tmp)
Run Code Online (Sandbox Code Playgroud)
2.将其转换为LinkedHashSet
LinkedHashSet<Integer>(Arrays.asList(tmp))
Run Code Online (Sandbox Code Playgroud)
3.然后找到HashSet的大小
(LinkedHashSet<Integer>(Arrays.asList(tmp))).size()
Run Code Online (Sandbox Code Playgroud)
4.将其与数组序列的长度进行比较。
(new LinkedHashSet<Integer>(Arrays.asList(tmp))).size() == seq.length)
Run Code Online (Sandbox Code Playgroud)
问题:如果长度不等于数组seq,那么元素如何唯一?
任何帮助将不胜感激,只是想学习这个概念,这肯定会在将来对我有帮助。谢谢 :)
我想这些问题的标题说明了一切,或者什么也没说......经过几个小时的谷歌搜索,尝试和重新发明Java我决定问你.
我有这个存储类:
class AppInfo implements Comparable<AppInfo > {
private String appname = "";
private String pname = "";
private String versionName = "";
//private int versionCode = 0;
private Drawable icon;
private String appdir = "";
private String appSize = "";
@Override
public int compareTo(AppInfo other) {
int compareAppsName = appname.compareToIgnoreCase(other.appname);
return compareAppsName;
}
}
Run Code Online (Sandbox Code Playgroud)
我做我做的事情,最终我得到一个填充对象的List.一切都很好,ListView填充了正确的数据......
现在我想搜索一个字符串(某个pname)并查看它是否存在于List中,如果存在,它在列表中的位置(它的索引)是什么.
尝试创建另一个列表,只包含我需要的数据..尝试了Lists,HashMaps,LinkedHashMap,2维数组/ arrayList ......没有做到这一点......还尝试迭代列表但无法弄清楚如何处理元素我有.
希望我有所作为,甚至可能.
披露:请耐心等待,我是Java的新人.
我有从db返回的LinkedHashMap.从这张地图我需要得到确切的最后一个元素(键).如果我使用keySet方法获取所有键,则返回Set of keys但Set不保证顺序.我需要从db返回的链接hashmap中取出最后一个键.我怎样才能做到这一点 ?
下面是我如何从数据库中获取数据的代码.
LinkedHashMap<String,String> map = someDao.getMap(String input);
Run Code Online (Sandbox Code Playgroud)
从这张地图我需要采取最后一个元素.
谢谢!
java ×10
linkedhashmap ×10
hashmap ×5
android ×1
arraylist ×1
arrays ×1
casting ×1
collections ×1
iterator ×1
java-8 ×1
java-stream ×1
shallow-copy ×1
treemap ×1