2017-03-10 23 views
1

したがって、私はダブルスの配列を降順にソートし、それに応じて文字列の並べ替えをソートする必要があります。両方の配列の長さは同じです。ダブルスの配列に基づいた文字列の配列の並べ替え

これは私が(ここでは別の答えから適応)それを行う方法です。

arraySは、文字列を含むとarrayダブルスが含まれています。

List<String> stringList = Arrays.asList(arrayS); 
Collections.sort(stringList, Comparator.comparing(s -> array[stringList.indexOf(s)])); 

2行目に範囲外のエラーが発生しています。

さらに詳しい情報:

System.out.println("arrayS: "+arrayS.length+" array: "+array.length); 

out -> arrayS: 125 array: 125 
+0

'array'は' arrayS'と同じ長さですか? – shmosel

+0

@shmoselええと私はそれをダブルチェックしました。 –

+0

Javaは**オブジェクト指向言語**です。これを使って。パラレルアレイは使用しないでください。フィールドとして2つの値を持つ新しいクラスを定義し、それらのオブジェクトの単一の配列を持ちます。これで 'double'と' String'の値は常にペアになりますので、配列をソートするとすべてが良い状態になります。 – Andreas

答えて

3

あなたは要素を探しているリスト/配列がソートされている間。それは災害のレシピです。

List<String> stringList = Arrays.asList(arrayS); 
List<String> indexes = new ArrayList<>(stringList); 
Collections.sort(stringList, Comparator.comparingDouble(s -> array[indexes.indexOf(s)])); 
+0

@ Mp.Lo。どのようにテストしているのか分かりませんが、うまく動作します:http://ideone.com/jYE3MC – shmosel

+0

ちょっとしたリメイク: 'stringList.sort(...)'を直接使うことはできません。 'Collections.sort(...)'です。コードは私のためにも機能します。 –

+0

@shmosel私は出力が正しいと思いますが、私は2倍の配列を印刷するときにはソートされていません。しかし、文字列の配列はソートされて見えます。うーん、私はこれを取得しないでください。 –

関連する問題