2012-01-03 5 views
0

StringのArrayListとintのArrayListがあるとします。文字列の異なる順序で2つのArrayListsをどのように並べ替えるか?

私のArrayListには含まれています

index : value 
----------------- 
0  : "Paul" 
1  : "Peter" 
2  : "Maria" 

整数contiansの私のArrayListを:

index : value 
----------------- 
0  : 2 
1  : 0 
2  : 1 

私は結果がで0にしてください

Collections.sort(myArrayOfint); 

を使用して、私のint配列をソートすると仮定インデックス0、インデックス1の1、インデックス2の右の2

私がしたいことは、String配列を並べ替えることです。たとえば、 "Paul"はインデックス1に、 "Peter"はインデックス2に、 "Maria"はインデックス0に移動します。順序は、私のint配列と同じスワップされます。

どうすればいいですか?

+3

Stringとintを持つObjectを含む単一の配列リストではなく、ArrayListを別々にする理由はありますか? – lins314159

+0

ソートする文字列にintが関連付けられていて、その文字列をリストに追加するときにインデックスとして最初にそのintを使用しなかったのはなぜですか? – Robin

答えて

4

あなたがプロパティを持つクラスを作成し、異なる特性に基づいて比較異なるComparator秒使用することができます:私の気持ちはあなたがintの配列や文字列の配列を持っていますが、あなたが持っているということです

public class Person { 
    private String name; 
    private Integer id; 

    //getter/setter 
} 

List<Person> people = new ArrayList<Person>(); 

Collections.sort(people, new Comparator<Person>() { 
    @Override 
    public int compare(Person p1, Person p2) { 
     return p1.getName().compareTo(p2.getName()); 
    } 
}); 


Collections.sort(people, new Comparator<Person>() { 
    @Override 
    public int compare(Person p1, Person p2) { 
     return p1.getId().compareTo(p2.getId()); 
    } 
}); 
3

Personの単一の配列、タイプintのフィールドIDおよびStringのフィールドnameを有するPersonの単一配列。あなたの人物をIDでソートすると、名前とIDは同じ順序でソートされます。

オブジェクトを使用します。それがOOPのすべてです。

+0

あなたは簡単な例を教えてもらえますか?それは最善の解決策のようです。どのようにArrayListのインデックスで文字列とintを区切り、int値でソートする方法は? – Samet

+0

βが存在する例はありますか? –

1

並べ替えてはいけません。myArrayOfint:文字列の並べ替え順に従って並べ替えを定義します。それを行うための最も簡単な方法は、このように、一時的な配列である:この問題は、同様に一時的な配列なしに解決することができますが、アルゴリズムはもっとある

myArrayOfStrings[myArrayOfint[0]] = myArrayOfStrings[2] = "Maria" 
myArrayOfStrings[myArrayOfint[1]] = myArrayOfStrings[0] = "Paul" 
myArrayOfStrings[myArrayOfint[2]] = myArrayOfStrings[1] = "Peter" 

ので

String tmp[] = new String[myArrayOfint.length]; 
for (int i = 0 ; i != myArrayOfint.length ; i++) { 
    tmp[i] = myArrayOfStrings[myArrayOfint[i]]; 
} 
myArrayOfStrings = tmp; 

この作品、複合体。

関連する問題