2017-08-19 5 views
-3

私はソートしたリストを持っていますが、ListColor[] に変換したいのですが、これらの色をリストに入れる理由の1つは、リスト内の色を並べ替えることができます。それは色だけを含んでいます。今すぐ並べ替えることができるので、リストをColor[]に変えたいと思います。これまで私はそれを変換するさまざまな方法を試みましたが失敗しました。リストを使用する理由は、現在の色に対応する座標に基づいて色を並べ替えるためです。ここではより多くの背景である:ここではObject []をColor []に変換する方法

は私の試みです:ここでは

SortColors s = new SortColors(); 

    s.x = roi.x; 
    s.y = roi.y; 
    s.color = colorToAdd; 

は、その順序付けクラスは次のとおりです。このいずれかに失敗した

public class SortColors implements Comparable<SortColors> { 
     public int x, y; 
     public Color color; 

     @Override 
     public int compareTo(SortColors other) { 
      if (null==other) throw new NullPointerException(); 
      // implement the logic, like: 
      // this will compare X, unless difference in Y is more than EG 10 
      return Math.abs(y - other.y) > 10 ? y - other.y : x - other.x; 
     } 

     @Override 
     public String toString(){ 

/*   String result = ""; 
       result = "x " + x + ", y " + y + "\n" + color.toString() + "\n"; 
      System.out.println(result); 
*/ 
      return color.toString(); 
     } 
} 

1.キャスト:

Color [] sortedColors = (Color[]) colorsToSort.toArray(); //List to a Object Array 

別のものがあります。

私もこれを試してみましたが、ArrayStoredExceptionを得る

Object [] sortedColors = colorsToSort.toArray(); //List to an Object Array 
Color[] sorted = Arrays.copyOf(sortedColors, sortedColors.length, Color[].class); 

を(これは私にArrayStore例外を得た):

Color [] sortedColors = colorsToSort.toArray(new Color[54]); //List to a Color Array 
+0

Poss [オブジェクト配列をJavaの文字列配列に変換する方法]の複製(https://stackoverflow.com/questions/1018750/how-to-convert-object-array-to-string-array-in-java) – Li357

+0

If String []でのみ動作する答えを見てください。私はその答えを試み、それは働いていませんでした。 @AndrewLi – ProgrammingCuber

+1

"*これらの色をリストに入れている唯一の理由は、自分の比較を実装してリスト内の色を並べ替えることができるようにするためです。"また、 'sort'メソッドを使って独自のComparatorで配列を' java.util.Arrays'クラスです。とにかく 'list.toArray(new Color [0]);'で特定の型のList配列から戻ることができます。 – Pshemo

答えて

1

あなたは

を言いましたこれらの色をリストに入れている唯一の理由は、私が私自身の比較を実装できます

リストを使用しないでください。最初から配列を使用し、それらをソートするArrays.sort(T[] a, Comparator<? super T> c)ユーティリティメソッドを使用します。

Color[] colors; // given an array of colors 
Arrays.sort(colors, (x, y) -> Math.abs(y - other.y) > 10 ? y - other.y : x - other.x); 

したり、比較演算とColor implements Comparable<Color>場合、Arrays.sort(Object[] a)ユーティリティメソッドを使用します。そうで

Arrays.sort(colors); 

をあなたは絶対にリストを使用する必要があるイベント:

Color[] colorArray = Arrays.stream(colorList).map(Color.class::cast).toArray(Color[]::new); 
+0

私はList 'Collections.sort(colorsToSort);をソートするためにこれを使います。私はあなたの答えを扱うためにこれをどうやってやりますか? – ProgrammingCuber

+0

@ProgrammingCuber私の答えに加えて参照してください – Bohemian

+0

私はリストを使用しませんが、私はあなたがなぜリストを使用するかを示すために私の質問にもっと追加しなければならないでしょう。 – ProgrammingCuber

関連する問題