排序int数组,与Java中的字符串数组绑定

排序int数组,与Java中的字符串数组绑定,java,sorting,treemap,Java,Sorting,Treemap,我有两个阵列: int[] intArray = new int[]{point1,point2,point3,point4}; String[] strArray = new String[]{worda,wordb,wordc,wordd}; 现在,我想按数字顺序对数组进行排序,使数组遵循相同的顺序。我相信这是一个常见的问题,但我无法让它发挥作用。我制作了一个树形图,并从每个数组中添加了值。树映射不应该按数组[]中的键自动排序吗?它似乎不起作用 TreeMap theMa

我有两个阵列:

int[] intArray = new int[]{point1,point2,point3,point4};

String[] strArray = new String[]{worda,wordb,wordc,wordd};
现在,我想按数字顺序对数组进行排序,使数组遵循相同的顺序。我相信这是一个常见的问题,但我无法让它发挥作用。我制作了一个树形图,并从每个数组中添加了值。树映射不应该按数组[]中的键自动排序吗?它似乎不起作用

        TreeMap theMap = new TreeMap();

        theMap.put(intArray, strArray);

是的,树形图应该很好用。但是,不是添加两个数组,而是添加每对值

theMap.put(point1, worda);
theMap.put(point2, wordb);
theMap.put(point3, wordc);
theMap.put(point4, wordd);

您混淆了
TreeMap
的使用方式
TreeMap
保持键的排序。在您的情况下,数组中有一个键-
,因此没有要排序的内容。您必须将每一对放入映射:
theMap.put(intArray[i],strArray[i])
对于每一个可能的
i

顺便说一句,如果只是为了排序,您不需要强制性的
树映射。您可以创建一个类的列表,其中包含一个点和一个字符串,然后使用
集合对其进行排序。排序(列表)
。当然,您必须为(inti=0;i可比较的
接口
for(int i=0; i< intArray.length; i++)
  theMap.put(intArray[i],strArray[i])
地图放置(在阵列[i],阵列[i])
您可能需要在迭代前检查
如果(intArray.length>strArray.length)抛出新的IllegalStateException()
它将以任何方式抛出异常,因此我不确定是否需要额外检查。@Peter Lawrey。是的,会的,我想传达这一点(请注意):我将添加assert intArray.length==strArray.length;彼得·劳瑞:啊,是的。这样比较好。谢谢我进步了一点。:)我几乎放弃了断言也是一个可用的工具。这假设所有的int值都是唯一的,任何重复的都会丢失。