Java 如果我们在开始时不知道字符串的数量,如何创建动态字符串数组?

Java 如果我们在开始时不知道字符串的数量,如何创建动态字符串数组?,java,Java,我有一个HashMap。如果我想创建hashmap.values()的字符串数组,我们可以将其创建为 String[] strArray = new String[hashmap.size()] 但我的问题是,如果hashmap值包含“A、B、C”,那么我需要将A、B和C添加到strArray中。使用数组列表 List myList=new ArrayList() 无论您的HashMap大小如何,您都可以轻松地使用您的 如果需要阵列,可以使用 String[] arr = myList.toA

我有一个
HashMap
。如果我想创建
hashmap.values()
的字符串数组,我们可以将其创建为

String[] strArray = new String[hashmap.size()]

但我的问题是,如果hashmap值包含“A、B、C”,那么我需要将A、B和C添加到strArray中。

使用
数组列表

List myList=new ArrayList()

无论您的
HashMap
大小如何,您都可以轻松地使用您的

如果需要阵列,可以使用

String[] arr = myList.toArray(new String[myList.size()]);

完成后。

它是否需要是一个数组?使用映射,您可以获得值集的键。

您可以在需要数组时复制值

Map<Double, String> map = ...
String[] values = map.values().toArray(new String[map.size()]);
Map=。。。
String[]values=map.values().toArray(新字符串[map.size()]);
如果更改贴图(即使大小不变),阵列也不会更改,您需要复制另一个副本。值是否需要唯一

所以我需要用值(A,B,C,p,Q,R…,Z)创建字符串数组

在这种情况下,您似乎要执行以下操作

Map<Double, String> map = ...
List<String> valueList = new ArrayList<>();
for(String value: map.values())
   valueList.addAll(Arrays.asList(value.split(",")));
String[] values = valueList.toArray(new String[valueList.size()]);
Map=。。。
List valueList=新的ArrayList();
for(字符串值:map.values())
addAll(Arrays.asList(value.split(“,”));
String[]values=valueList.toArray(新字符串[valueList.size()]);

为什么不先计算所需项目的数量(遍历hashmap一次),然后实际创建数组并将值放入其中?我想没有人会给你写电子邮件,答案会在这里…;)另外,你能告诉我们,你想用这个阵列做什么吗?如果需要动态更改,您可以只使用一个可用集合(如
ArrayList
)。+1如果需要数组,您可以在完成后使用
String[]arr=myList.toArray(新字符串[myList.size()])
。@PeterLawrey编辑我的答案并添加这一点。:-)我想你不能理解我的问题。也许是因为我不能用礼仪的语言来回答这个问题。无论如何,我会再解释一遍。例如:HashMap值为,谢谢Peter。。我想你不能理解我的问题。可能是因为我不想用礼仪的语言来回答这个问题。无论如何,我会再解释一遍。例如:Map Map=newhashmap();地图放置(“1”、“A、B、C”);地图放置(“2”,“P,Q,R…,Z”);所以我需要用值(A,B,C,P,Q,R…,Z)创建字符串数组。请注意,Map中逗号分隔的值可以扩展到任意长度(wic是动态的)。请给我一些建议。谢谢彼得。。我想你不能理解我的问题。可能是因为我不想用礼仪的语言来回答这个问题。无论如何,我会再解释一遍。例如:Map Map=newhashmap();地图放置(“1”、“A、B、C”);地图放置(“2”,“P,Q,R…,Z”);所以我需要用值(A,B,C,P,Q,R…,Z)创建字符串数组。请注意,Map中逗号分隔的值可以扩展到任意长度(wic是动态的)。请给我一些建议。是否希望数组中逗号之间的每个字符串都有一个元素?如果是这样的话,我已经添加了一个解决方案。我希望数组中逗号之间的每个字符串都有一个元素。要构建字符串数组,我需要knw的大小(动态)。我找不到大小。您不需要事先知道大小,首先使用列表,您可以在创建数组之前确定大小(如示例中所示),感谢John的回复。是的,它需要是数组。HashMap中的值以逗号分隔。这些逗号分隔的值被逗号分割并分别添加到字符串数组中。您可以模拟ArrayList设置默认的初始大小,如果超出该值,则使用系统中的数组副本(我认为)将值复制到更大的数组中。这不是最有效的,但你似乎需要一个数组