如何用java创建一个类似于python字典的字典,并一次输入多个值?

如何用java创建一个类似于python字典的字典,并一次输入多个值?,java,collections,hashmap,hashset,Java,Collections,Hashmap,Hashset,我所做的: 公共类尝试{ 公共静态void main(字符串[]args){ Set universal=新的HashSet(); 集合.addAll(通用的'a','b','c','d','e','f','g','h'); //System.out.println(通用); 哈希映射图= 新的HashMap(); HashSet值=新的HashSet(); 集合.addAll(值“a”、“b”); System.out.println(值); //输出:[a,b] 图.put(1,值); Sy

我所做的:

公共类尝试{
公共静态void main(字符串[]args){
Set universal=新的HashSet();
集合.addAll(通用的'a','b','c','d','e','f','g','h');
//System.out.println(通用);
哈希映射图=
新的HashMap();
HashSet值=新的HashSet();
集合.addAll(值“a”、“b”);
System.out.println(值);
//输出:[a,b]
图.put(1,值);
System.out.println(graph.get(1));
//输出:[a,b]
System.out.println(图形);
//输出:{1=[a,b]}
值。删除所有(值);
System.out.println(graph.get(1));
//输出:[]
//为什么该值会从图表中清除?
System.out.println(图形);
//输出:{1=[]}
}
}

如何一次输入这些值,而不是一直使用
put()
函数?难道没有更好的办法吗?另外,请解释为什么变量值上的函数用法导致将其从变量图中删除。我希望结构是可变的。

首先,这看起来不像python字典。python词典应该是

graph = {1:{'a','b'},2:{'c','d'},3:{'e','f'},4:{'g','h'},5:{'b','d'},6:{'b','e'},7:{'a','c'},8:{'f','h'},9:{'e','g'}}
{1: {'a': 'b'}, 2: {'c': 'd'}}
一本元组字典将是

graph = {1:{'a','b'},2:{'c','d'},3:{'e','f'},4:{'g','h'},5:{'b','d'},6:{'b','e'},7:{'a','c'},8:{'f','h'},9:{'e','g'}}
{1: {'a': 'b'}, 2: {'c': 'd'}}
在Java中,您可以将其表示为
Map
,(或者如果您的意思是
Map
),但这会导致非惯用的、繁琐的代码

由于数据结构是连续整数的映射,因此更好的表示形式是数组:

{1: ('a', 'b'), 2: ('c', 'd')}
唯一的问题是
null
。。。这是必需的,因为Java数组索引从零开始


这也可以表示为
char[][]
或其他比
Map
公式的
Map
更容易使用(更有效)的方式。python词典应该是

graph = {1:{'a','b'},2:{'c','d'},3:{'e','f'},4:{'g','h'},5:{'b','d'},6:{'b','e'},7:{'a','c'},8:{'f','h'},9:{'e','g'}}
{1: {'a': 'b'}, 2: {'c': 'd'}}
一本元组字典将是

graph = {1:{'a','b'},2:{'c','d'},3:{'e','f'},4:{'g','h'},5:{'b','d'},6:{'b','e'},7:{'a','c'},8:{'f','h'},9:{'e','g'}}
{1: {'a': 'b'}, 2: {'c': 'd'}}
在Java中,您可以将其表示为
Map
,(或者如果您的意思是
Map
),但这会导致非惯用的、繁琐的代码

由于数据结构是连续整数的映射,因此更好的表示形式是数组:

{1: ('a', 'b'), 2: ('c', 'd')}
唯一的问题是
null
。。。这是必需的,因为Java数组索引从零开始


这也可以表示为
char[][]
或其他比
Map
公式的
Map
更容易使用(更有效)的方式

graph={1:{'a','b',2:{'c','d',3:{'e','f',4:{'g','h',5:{'b','d',6:{'b','e',7:{'a','c',8:{'f','h',9:{'e','g'}
可以在Java 9+中实现,如下所示:

graph=Map.of(1,Set.of(“a”,“b”),
2,一套(“c”、“d”),
3,一套(“e”、“f”),
4,一套(“g”、“h”),
5,一套(“b”、“d”),
第6条(“b”、“e”),
7,一套(“a”、“c”),
第8组(“f”、“h”),
第9条(“e”、“g”);
结果是一个不可变的
映射
,与Python不同,Python的结果是可变的

打印后,它看起来像这样,因为
Map
HashMap
,所以顺序发生了变化:

{4=[g,h],3=[e,f],2=[c,d],1=[a,b],9=[e,g],8=[f,h],7=[a,c],6=[b,e],5=[b,d]}

以下Python语句:

graph={1:{'a','b',2:{'c','d',3:{'e','f',4:{'g','h',5:{'b','d',6:{'b','e',7:{'a','c',8:{'f','h',9:{'e','g'}
可以在Java 9+中实现,如下所示:

graph=Map.of(1,Set.of(“a”,“b”),
2,一套(“c”、“d”),
3,一套(“e”、“f”),
4,一套(“g”、“h”),
5,一套(“b”、“d”),
第6条(“b”、“e”),
7,一套(“a”、“c”),
第8组(“f”、“h”),
第9条(“e”、“g”);
结果是一个不可变的
映射
,与Python不同,Python的结果是可变的

打印后,它看起来像这样,因为
Map
HashMap
,所以顺序发生了变化:

{4=[g,h],3=[e,f],2=[c,d],1=[a,b],9=[e,g],8=[f,h],7=[a,c],6=[b,e],5=[b,d]}

既然
Java 9
可以这样实现,结果是可修改的:

Map-graph=新的HashMap(Map.of(
1,新HashSet(集合('a','b')),
2,新的HashSet(集合('c','d')),
3,新的HashSet(集合('e','f')),
4,新的散列集('g','h')的集合),
5,新HashSet(集合('b','d')),
6,新HashSet(集合('b','e')),
7,新HashSet(集合('a','c')),
8,新HashSet(集合('f','h')),
9,新的HashSet(集合('e','g'));
语句较短,但结果不可修改:

Map immutable=Map.of(
1,一组('a','b'),
2,一组('c','d'),
3、‘e’、‘f’的集合,
4,'g','h'的集合,
5,一组('b','d'),
6,一组('b','e'),
7,一组('a','c'),
8,一组('f','h'),
9,一组('e','g');

在早期版本中,由于
Java 1.5
,您可以使用如下语句,结果是可修改的:

Map-graph=newhashmap();
graph.put(1,新的HashSet(Arrays.asList('a','b'));
graph.put(2,新的HashSet(Arrays.asList('c','d'));
graph.put(3,新的HashSet(Arrays.asList('e','f'));
graph.put(4,新的HashSet(Arrays.asList('g','h'));
graph.put(5,新的HashSet(Arrays.asList('b','d'));
graph.put(6,新的HashSet(Arrays.asList('b','e'));
graph.put(7,新的HashSet(Arrays.asList('a','c'));
graph.put(8,新的HashSet(Arrays.asList('f','h'));
graph.put(9,新的HashSet(Arrays.asList('e','g'));
简短的陈述