Java集合,使用树集作为树图的值

问题描述 投票:0回答:3

我想使用TreeMap实现创建数据集合,其中String为键,TreeSet为值,并使用自己的Mycomparator实例进行排序。它不能包含重复值,因此不能包含TreeMap。

private TreeMap<String, TreeSet<String>> tree_map = null;

public constructorTreeMap() {
    tree_map = new TreeSet<String>()new MyComparator();

我无法正确地实例化,该怎么办?

然后如何将多个字符串添加到TreeSet中?

感谢任何帮助,=)

java collections treemap treeset
3个回答
0
投票

我希望下面的示例可以使您的工作变得简单:

TreeMap<String, TreeSet<String>> treeMap = null;
// First you instantiate your TreeMap
treeMap = new TreeMap<String, TreeSet<String>>();

// Next you create your TreeSet value which you can instantiate with your comparator
TreeSet<String> value = new TreeSet<String>(myComparator);
value.add("FOO");
value.add("BAR");
// Then you can insert that TreeSet as value in your TreeMap
treeMap.put("your-string-key", value);

尽管您可能在实例化treeMap时考虑使用Set<String>接口类,这使其更通用:

TreeMap<String, Set<String>> treeMap = new TreeMap<String, Set<String>>();

0
投票

您的代码的语法有误。应该是这样的:

private TreeMap<String, TreeSet<String>> tree_map = null;

public SynoniemenBeheer() {
    tree_map = new TreeMap<>();
    TreeSet<String> tree_set = new TreeSet<>(new MyComparator());
    tree_map.put("foo", tree_set);
}

并将一些元素添加到已经存在的TreeSet <>中,您可以执行以下操作:

if (tree_map.get("foo") == null) { //null check and fill only if necessary
    tree_map.put("foo", new TreeSet<>());
}
tree_map.get("foo").add("foo-foo");

0
投票

首先实例化树形图:

TreeMap<String, TreeSet<String>> map = new TreeMap<>();

然后实例化要放入地图中的树集:

TreeSet set = new TreeSet<String>(comparator);

然后将要添加的值添加到集合中:

Collections.addAll(set, "value1","value2","value3");

然后将集合放入地图中:

map.put("key", set);
© www.soinside.com 2019 - 2024. All rights reserved.