私は次String[]
のような配列を持っています
{"3","2","4","10","11","6","5","8","9","7"}
アルファベット順ではなく、番号順に並べ替えたいです。
私が使用する場合
Arrays.sort(myarray);
私は得る
{"10","11","2","3","4","5","6","7","8","9"}
それ以外の
{"2","3","4","5","6","7","8","9","10","11"}
Comparator
次のようなカスタムを試してください。
Arrays.sort(myarray, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return Integer.valueOf(o1).compareTo(Integer.valueOf(o2));
}
});
気に入っていただければ幸いです。
String
s をsに変換する最も簡単で効率的な方法はint
次のとおりです。
int[] myIntArray = new int[myarray.length];
for (int i = 0; i < myarray.length; i++) {
myIntArray[i] = Integer.parseInt(myarray[i]);
}
次に、整数配列をソートします。本当に必要な場合は、後でいつでも元に戻すことができます。
for (int i = 0; i < myIntArray.length; i++) {
myarray[i] = "" + myIntArray[i];
}
別の方法として、Comparatorインターフェースを使用して要素の比較方法を正確に指示することもできますが、それはおそらく各String
値をint
とにかく に変換することになり、上記のアプローチがはるかに効率的になります。
文字列形式の数値のみが含まれている場合、U は sol-1 を使用できます。
String []arr = {"3","2","4","10","11","6","5","8","9","7"};
Set<Integer> set = new TreeSet<Integer>();
Arrays.sort(arr);
for(String s:arr){
System.out.print(s+" ");
set.add(Integer.parseInt(s));
}
System.out.println(set);
Integer i = new Integer("4f");
System.out.println(i);
String []arr = {"3","2","4","10","11","6","5","8","9","7","jgj","ek"};
Set<Integer> intSet = new TreeSet<Integer>();
Set<String> strSet = new TreeSet<String>();
Arrays.sort(arr);
for(String s:arr){
try {
int i = Integer.parseInt(s);
intSet.add(i);
} catch (NumberFormatException e) {
strSet.add(s);
}
}
List<String> result = new ArrayList<String>();
for(int val:intSet){
result.add(val+"");
}
result.addAll(strSet);
System.out.println(result);
}
CustomComparator クラスを 1 つ作成し、それを sort() メソッドに渡します。
public class CustomComparator implements Comparator<String>{
@Override
public int compare(String s1, String s2) {
Integer i1=null;
Integer i2=null;
try {
i1 = Integer.parseInt(s1);
} catch (NumberFormatException e) {
}
try {
i2 = Integer.parseInt(s2);
} catch (NumberFormatException e) {
}
if(i1!=null && i2!=null){
return i1.compareTo(i2);
}else{
return s1.compareTo(s2);
}
}
}
public static void main(){
String []arr = {"3","2","4","10","11","6","5","8","9","7","jgj","ek"};
Arrays.sort(arr, new CustomComparator());
for(String s:arr){
System.out.print(s+" ");
}
}
目的の出力には、文字列の対応する整数の番号順が含まれています。したがって、文字列から整数への変換を避けることはできません。vikingsteve の代わりのコンパレータとして、これを使用できます。
Arrays.sort(array, new Comparator<String>() {
@Override
public int compare(String str1, String str2) {
return Integer.parseInt(str1) - Integer.parseInt(str2);
}
});
public class test1 {
public static void main(String[] args)
{
String[] str = {"3","2","4","10","11","6","5","8","9","7"};
int[] a = new int[str.length];
for(int i=0;i<a.length;i++)
{
a[i]=Integer.parseInt(str[i]);
}
Arrays.sort(a);
for(int i=0;i<a.length;i++)
{
str[i]=String.valueOf(a[i]);
}
}
}