Java : ArrayList<HashMap<Integer, 整数>>

标签 java arraylist hashmap

是否有更好的方法在不使用外部库的情况下用 Java 执行以下操作。

我需要对 int(原始)的组/子(树状)结构进行建模。在 Json 中

[{1,1}, {1,2}, {2,1},{3,1}]

我需要支持添加/删除元素(元素是一对 {group, child} )而不重复。

我在想,保持这样的数据结构。

ArrayList<HashMap<Integer,Integer>>

添加。

遍历 ArrayList,根据要插入的值检查 HashMap 键和值,如果不存在则插入。

删除:

遍历 ArrayList,根据要删除的值检查 HashMap 键和值,如果存在则删除。

标准库是否有更好的数据结构/方法。


根据下面的答案之一,我开设了这样的类(class)。 请让我知道任何需要注意的事情。我期待(并打算尝试)arraylist 将通过使用 KeyValue 类中的 equal 方法正确处理添加/删除。谢谢。

 static class KeyValue {
        int groupPos;
        int childPos;

        KeyValue(int groupPos, int childPos) {
            this.groupPos = groupPos;
            this.childPos = childPos;
        }

        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;

            KeyValue keyValue = (KeyValue) o;

            if (childPos != keyValue.childPos) return false;
            if (groupPos != keyValue.groupPos) return false;

            return true;
        }

        @Override
        public int hashCode() {
            int result = groupPos;
            result = 31 * result + childPos;
            return result;
        }
    }

最佳答案

如果我明白你想做什么,这可能会更简单:

TreeMap<Integer,TreeSet<Integer>>
  or
HashMap<Integer,HashSet<Integer>>

所以,而不是

[{1,1}, {1,2}, {2,1}, {3,1}]

你会

[{1, {1, 2}},
 {2, {1}},
 {3, {1}}]

请注意,上述所有 4 个类都会自动处理消除重复项。

添加:

TreeMap<Integer, TreeSet<Integer>> map;
TreeSet<Integer> set = map.get(group);
if (set == null) // create it if it doesn't exist
{
  set = new TreeSet<Integer>();
  map.put(group, set);
}
set.add(child);

删除:

TreeMap<Integer, TreeSet<Integer>> map;
TreeSet<Integer> set = map.get(group);
set.remove(child);
if (set.isEmpty()) // remove it if it is now empty
  map.remove(group);

关于Java : ArrayList<HashMap<Integer, 整数>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14756868/

相关文章:

java - 在 AWS Lambda 中创建数据库服务

java - tomcat 服务器中的性能问题 Sqlite

java - 将 hashmap 的 arraylist 放入另一个中

Java 2 昏暗数组类

list - 从 HashMap 列表中提取值 Clojure

java - 不能在类上使用 lombok @NoArgsConstructor

java - KDB 到 JKS keystore 转换

java - 递归列出 Integer Arraylist 中的所有排列和组合

hashmap - Java8 总结到流的限制

java - 将数据从双数组传输到 HashMap