如何使用不同的数据类型进行交换

时间:2017-04-06 05:38:32

标签: java arrays numbers swap words

好的,假设我有一个4个整数的数组==

int[] input = new int[]{1,2,3,4};

//now I some how converted these numbers into words and gets an array:-
String Str = new String[]{one,two,three,four};
//then I run a sort method on Str.
Arrays.sort(Str);
//and I got this array in the end  ::: {four,one,three,two}

现在我想将它重新转换为数字(int),这样我的最终结果应如下所示: - {4,1,3,2}

总结: - 我想通过其英语(单词)表示

对输入int数组进行排序
  

示例: -

[input]      [convert to words]         [sorting]             [Result]
  

{1,2,3,4} => {one,two,three,four} => {four,one,three,two} => 4,1,3,2

     

{55,23,3,45} => {五十五,二十三,三,四十五} => {五十五,四十五,三,二十三} => {55,45,3,23}

所以,直到现在我设法将输入转换为单词并对其进行排序但我不知道如何将Str array转换回其原始的int数组,如上面的示例所示......

  

真正的问题: - 我知道我可以使用循环和转换它   array ..但我想知道是否有可能使用数组交换?[也许   通过它的索引??]

P.s: - 对不起,我可能会给你带来任何方便。并提前感谢

3 个答案:

答案 0 :(得分:0)

您可以执行以下操作..

  1. 您可以创建一个类并存储该类,而不是单独存储。

    public class Numbers {
    String word;
    Integer digit;
    
    public Numbers(String w, int d) {
        word = w;
        digit = d;
    }
    

    }

  2. 使用Arrays.sort并创建自定义比较器

    Arrays.sort(n, new Comparator<Numbers>() {
        public int compare(Numbers word, Numbers o) {
            return word.digit.compareTo((o.digit));
        }
    });
    

答案 1 :(得分:0)

假设您知道如何将int转换为String, 只需使用你的&#34; intToWord&#34;比较中的成功:

Arrays.sort(n, new Comparator<Integer>() {
  public int compare(Integer a, Integer b) {
      return intToWord(a).compareTo(intToWord(b));
  }
}

答案 2 :(得分:-1)

您已将这些数字翻译成单词,并且在翻译时遇到了问题。

在第一部分进行转换时,创建一个包含键值对的地图,例如{"one","1"},{"two","2"}。然后使用该映射将已排序的结果转换回来。