标签: linkedhashmap

如果HashMap构造并"填充"为LinkedHashMap,它是否会在下一次读取时保留其元素的顺序?

假设我有一个返回HashMap对象的Java方法.

因为LinkedHashMap是HashMap的子类,所以我可以从这个方法返回一个LinkedHashMap就好了.

在下一个"读取"操作(不添加/删除/修改K/V对)时,迭代结果方法的键(返回HashMap)将按照与原始LinkedHashMap相同的顺序进行,即使HashMap也是如此缺乏关键链接?

java hashmap linkedhashmap data-structures

2
推荐指数
1
解决办法
979
查看次数

获取LinkedHashMap的子集并保留顺序

与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)

java iterator linkedhashmap

2
推荐指数
2
解决办法
2130
查看次数

java将LinkedHashMap转换为扩展LinkedHashMap的类

我有一个扩展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)

请帮我解决错误!

java casting hashmap linkedhashmap

2
推荐指数
1
解决办法
2288
查看次数

LinkedHashMap的订单列表

我有这个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)

是正确的?谢谢大家!!!

java collections linkedhashmap

2
推荐指数
1
解决办法
1156
查看次数

Hashmaps,Treemaps和LinkedHashmaps如何在Java中工作?

我对地图有各种疑问:

  1. 迭代Hashmap时,无法保证迭代顺序.那为什么呢?
  2. 为什么Hashmaps比Treemaps更快?
  3. LinkedHashMaps如何运作,他们如何维护订单?是因为它们有一个双向链表,其中包含有关在条目之前和之后存储哪个条目的信息?

我一直在阅读API文档,但由于我是初学者,在编程方面我很难理解它.

java hashmap treemap linkedhashmap

2
推荐指数
1
解决办法
225
查看次数

从 HashMap 获取值作为参考

是否可以从中获取值列表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)

java hashmap shallow-copy linkedhashmap

2
推荐指数
1
解决办法
1074
查看次数

为什么.filter无法从我的Map &lt;String,Object&gt;中删除空值

我正在尝试从我的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)

期望空值及其键将被删除,但这似乎没有发生。

java linkedhashmap java-8 java-stream

2
推荐指数
1
解决办法
121
查看次数

使用Java中的LinkedHashSet检查数组中的唯一值

这实际上不是一个普遍的问题,但是是的。我在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 arrays linkedhashmap

2
推荐指数
1
解决办法
52
查看次数

Java - 在存储对象列表中查找字符串的位置

我想这些问题的标题说明了一切,或者什么也没说......经过几个小时的谷歌搜索,尝试和重新发明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的新人.

java android arraylist hashmap linkedhashmap

1
推荐指数
1
解决办法
5086
查看次数

从dao层返回的链接hashmap中获取最后一个元素?

我有从db返回的LinkedHashMap.从这张地图我需要得到确切的最后一个元素(键).如果我使用keySet方法获取所有键,则返回Set of keys但Set不保证顺序.我需要从db返回的链接hashmap中取出最后一个键.我怎样才能做到这一点 ?

下面是我如何从数据库中获取数据的代码.

LinkedHashMap<String,String> map = someDao.getMap(String input);
Run Code Online (Sandbox Code Playgroud)

从这张地图我需要采取最后一个元素.

谢谢!

java linkedhashmap

1
推荐指数
1
解决办法
8510
查看次数