Java 扁平setmulti映射并保留插入顺序
我正在项目中使用Java 扁平setmulti映射并保留插入顺序,java,guava,multimap,Java,Guava,Multimap,我正在项目中使用LinkedHashMultimap。我需要在保持插入顺序的同时展平这些值。例如 SetMultimap<String, Integer> m = LinkedHashMultimap.create(); m.put("a", 1); m.put("b",2); m.put("a",3); 但我需要 a : 1 b : 2 a : 3 或者我需要将输出放在列表中 [a,1,b,2,a,3] 另外,我使用的是LinkedHashMultimap,因为我不希望键的
LinkedHashMultimap
。我需要在保持插入顺序的同时展平这些值。例如
SetMultimap<String, Integer> m = LinkedHashMultimap.create();
m.put("a", 1);
m.put("b",2);
m.put("a",3);
但我需要
a : 1
b : 2
a : 3
或者我需要将输出放在列表中
[a,1,b,2,a,3]
另外,我使用的是LinkedHashMultimap
,因为我不希望键的值重复,我需要保留插入顺序
如何执行此操作,以便迭代上述输出以进行进一步处理?您可以使用映射内的列表为同一个键存储多个值
public class Test {
public static void main(final String[] args) {
LinkedList<Values> list = new LinkedList<Values>();
list.add(new Values("a", 1));
list.add(new Values("b", 2));
list.add(new Values("a", 3));
System.out.println(list);
}
}
class Values {
String key;
int value;
public Values(final String key, final int value) {
super();
this.key = key;
this.value = value;
}
@Override
public String toString() {
return key + "," + value;
}
}
我希望这就是您想要的方式。您可以使用地图中的列表为同一个键存储多个值
public class Test {
public static void main(final String[] args) {
LinkedList<Values> list = new LinkedList<Values>();
list.add(new Values("a", 1));
list.add(new Values("b", 2));
list.add(new Values("a", 3));
System.out.println(list);
}
}
class Values {
String key;
int value;
public Values(final String key, final int value) {
super();
this.key = key;
this.value = value;
}
@Override
public String toString() {
return key + "," + value;
}
}
我希望这就是您想要的方式。被返回,并按照插入顺序进行迭代,这样您就可以执行以下操作,而不会失去多重映射的好处
for (Map.Entry<String, Integer> entry : m.entries()) {
System.out.println(entry.getKey() + " : " + entry.getValue());
}
for(Map.Entry:m.entries()){
System.out.println(entry.getKey()+“:”+entry.getValue());
}
将返回,并按照插入顺序进行迭代,这样您就可以执行以下操作,以免失去多重映射的好处
for (Map.Entry<String, Integer> entry : m.entries()) {
System.out.println(entry.getKey() + " : " + entry.getValue());
}
for(Map.Entry:m.entries()){
System.out.println(entry.getKey()+“:”+entry.getValue());
}
您可以通过扩展LinkedHashMultiMap创建一个包装类,并添加一个数组作为其字段之一,以完全按照您的需要跟踪订单。您可以通过扩展LinkedHashMultiMap创建一个包装类,并添加一个数组作为其字段之一,以完全按照您的需要跟踪订单。我需要一个扁平的保留插入顺序,如[a,1,b,2,a,3]
@Krishna Kuntala。。如果我把你们的产量降低,我就得不到订单了。对!@user2731629我希望我更新的答案能解决你使用对象和链表而不是链表的问题。对不起!!。。它包含重复项。我不想要任何重复的值。如果您再次添加a,3
,则不应添加它。这就是我使用SetMuliMap的原因。我需要一个扁平的版本,通过保留插入顺序,如[a,1,b,2,a,3]
@Krishna Kuntala。。如果我把你们的产量降低,我就得不到订单了。对!@user2731629我希望我更新的答案能解决你使用对象和链表而不是链表的问题。对不起!!。。它包含重复项。我不想要任何重复的值。如果您再次添加a,3
,则不应添加它。这就是我使用SetMuliMap的原因。