2014-01-26 88 views
-2

基本上我有两个字符串数组。其中一个字符串包含一个数字,第二个字符串包含文本和一个数字。java - 排序字符串,某种

我该如何将这些匹配在一起?

例子:

private String[] StringArray1 = {"5648", "4216", "3254", "2541", "10"}; 
private String[] StringArray2 = {"Derp: 10", "Herp: 3254", "peter: 2541", "jdp: 4216", "dieter: 5648"}; 

输出应该是:

dieter: 5648 
jdp: 4216 
Herp: 3254 
peter: 2541 
Derp: 10 

好了,我要的是为排序值StringArray2,所以它具有最高的开始,我可以把它打印出来即可。

+0

看String方法'matches(String regex)',然后回来一个命题。 – AntonH

+0

如何从一些语法有效的代码开始? 'String1'和'String2'不是有效的字符串数组,也不是有效的字符串。 –

+0

这个问题还不够明确,有几种解释方法。从写下你想要达到的目标开始。用简单的英语在几个步骤中描述你的算法 - 如果你有这个问题,你会用笔和纸做什么?然后尝试在Java中模拟该算法 - 我们很乐意在那里帮助您。 –

回答

0

使用HashMap这将是很好:

HashMap<String,String> hashMap = new HashMap<String,String>(); 
String[] string1 = {"5648", "4216", "3254", "2541", "10"}; 
String[] string2 = {"Derp: 10", "Herp: 3254", "peter: 2541", "jdp: 4216", "dieter: 5648"}; 
for (String str : string2) 
{ 
    String[] keyVal = str.split(": "); 
    hashMap.put(keyVal[1],keyVal[0]); 
} 
for (String key : string1) 
{ 
    String val = hashMap.get(key); 
    System.out.println(val+": "+key); 
} 
0

,如果你的第二个数组转换成地图,然后就可以轻松完成您的task.Key将是数量和价值将是数组的文字MAP

+0

我对java很陌生,我还没有使用过MAP:/ – Totenfluch

+0

@ user3188045在谷歌搜索你会发现很多例子。通用的解决方案将是地图 – Kick

+0

k,感谢提示与地图 – Totenfluch

0

使用地图是一个很好的解决方案。

例如:

Map<String, Integer> data = new HashMap<String, Integer>(); 
data.put("Herp", 3254); 
data.put("peter", 2541); 
//... 

for (String name: data.keySet()) { 
    System.out.println(name + ": " + data.get(name)); 
} 

是的,如果这个数据是你的输入,收集地图,如前面的回答说明。但如果可能的话,最初使用地图。