【问题标题】:Alphabetize characters in a string then put the alphabetized characters into a new String?将字符串中的字符按字母顺序排列,然后将按字母顺序排列的字符放入新的字符串中?
【发布时间】:2015-05-07 08:48:10
【问题描述】:

所以我必须在一个数组中取一个字符串,将该字符串作为所有字符放入一个新数组中,按字母顺序对字符进行排序,然后我需要将新的按​​字母顺序排列的字符放入一个新字符串中,然后打印它。

如何创建一种方法来按字母顺序排列字符数组,然后将数组转换为一个字符串?

【问题讨论】:

  • 您能发布输入示例和预期结果吗?
  • 你能告诉我们一些你迄今为止尝试过的代码吗?
  • 很遗憾我现在不在我的桌面上,等我回来后我会用我所拥有的进行编辑。
  • 你需要处理大小写混合的字符串吗..?
  • 代理对呢?

标签: java arrays string sorting methods


【解决方案1】:

我猜你正在寻找这样的东西:

char[] a = ...;
Arrays.sort(a);
String s = new String(a);

【讨论】:

  • 你从来没有解释过将字符串转换为字符数组吗?
  • 这不是问题的一部分。 “我将如何制作一种方法来按字母顺序排列字符数组,然后将数组转换为一个字符串?”
【解决方案2】:
 public static void main(String [] args) {          
    String str = "hello";
    char [] array = str.toCharArray();
    Arrays.sort(array);
    String sortedStr = new String(array);
    System.out.println(sortedStr);
    }

【讨论】:

    【解决方案3】:
    char[] array = yourString.toCharArry();
    Arrays.sort(array);
    youNewString = new String(array);
    

    【讨论】:

    • 我没有投反对票,但我可能应该更清楚一点。我知道如何将字符串转换为字符数组。我只是在寻找如何对字符数组进行排序然后将字母字符数组转换为新字符串。
    【解决方案4】:

    在 Java 8 中:

    String s = ... ;
    String sSorted = Stream.of(s.split(""))
        .sorted()
        .collect(Collectors.joining());
    

    【讨论】:

      【解决方案5】:

      如果您需要处理大小写混合的字符串,例如edcbaABCDEF,那么你需要做一些不同的事情......

      Arrays.sort() 在其他答案中只处理数字字符值,所以你会得到 edcbaABCDEF => ABCDEFabcde

      Arrays.sort(arr,comparator) 只能用于包装类型,即字符,而不是字符,所以你需要先包装它。

      Character [] wrapped = new Character[charArray.length];
      int i = 0;
      for (char c : charArray) {
          wrapped[i++] = c;
      }
      

      然后排序

      Arrays.sort(wrapped, new Comparator<Character>() {
          @Override
          public int compare(Character o1, Character o2) {
              return Character.compare(Character.toLowerCase(o1),
                      Character.toLowerCase(o2));
          }
      });
      

      转回字符串

      i = 0;
      for (char c : wrapped) {
          charArray[i++] = c;
      }
      System.out.println(new String(charArray));
      
      ==> AaBbCcDdEeF
      

      这可以使用 Apache commons lang ArrayUtils helper 来简化。

      String test = "edcbaABCDEF";
      Character[] charArray = ArrayUtils.toObject(test.toCharArray());
      Arrays.sort(charArray, new Comparator<Character>() {
          @Override
          public int compare(Character o1, Character o2) {
              return Character.compare(Character.toLowerCase(o1),
                      Character.toLowerCase(o2));
          }
      });
      System.out.println(new String(ArrayUtils.toPrimitive(charArray)));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多