【问题标题】:java -Sorting Strings, some kind ofjava - 排序字符串,某种
【发布时间】:2014-01-26 16:41:50
【问题描述】:

基本上我有两个字符串数组。其中一个字符串包含一个数字,第二个字符串包含文本和一个数字。

请问,我怎样才能将它们匹配在一起?

例子:

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 的值​​进行排序,所以它从最高值开始,然后我可以打印出来。

【问题讨论】:

  • 查看String方法'matches(String regex)',然后回来一个命题。
  • 从一些语法有效的代码开始怎么样? String1String2 不是有效的字符串数组,也不是有效的字符串。
  • 问题不够明确,有几种解读方式。从写下你想要达到的目标开始。用简单的英语分几个步骤描述你的算法——如果给你这个问题,你会用笔和纸做什么?然后尝试在 Java 中模仿该算法 - 我们很乐意为您提供帮助。
  • 更新了主帖,以反映我想要实现的目标

标签: java arrays string sorting


【解决方案1】:

使用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);
}

【讨论】:

    【解决方案2】:

    如果您将第二个数组转换为 MAP 会很好,这样您就可以轻松完成您的任务。键将是数字,值将是 MAP 中数组的文本

    【讨论】:

    • 我是java新手,还没用过MAP:/
    • @user3188045 在google上搜索你会发现很多例子。通用的解决方案是map
    【解决方案3】:

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

    例如:

    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) );
    }
    

    是的,如果此数据是您的输入,请按照上一个答案中的说明收集地图。但如果可能,请先使用地图。

    【讨论】:

      猜你喜欢
      • 2011-07-22
      • 2014-10-01
      • 2012-01-17
      • 1970-01-01
      • 1970-01-01
      • 2018-04-23
      • 1970-01-01
      • 1970-01-01
      • 2020-07-17
      相关资源
      最近更新 更多