私はJavaでオブジェクトを操作する方がよいと思います(私はコードを見たとき、私はより簡単に私がやってみたかったかを把握することができます)と、あなたは多次元文字列配列に変換する必要がある場合よりも。 2つのソリューションを見て、まずあなたが望むものと、私が示唆しているものを見てください。それがあなたを助けることを願ってください。
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
/**
*
* @author Adrian Stefanovski
*/
public class StackOverflow {
public static String[][] sorting_array = new String[20][6];
public static int max_popularity = 10;
public static int max_rating = 10;
public static ArrayList<MovieSomething> sorting_array_list = new ArrayList<>();
public static void main(String[] args) {
//Solution 1
populate_array();
print_not_sorted_array();
sort_array();
print_sorted_array();
//Solution 2
populate_array(); //Use diferent values
populate_array_list();
print_not_sorted_array_list();
sort_array_list();
print_sorted_array_list();
to_multi_d_string_array();
}
public static void populate_array() {
for (int i = 0; i < 20; i++) {
sorting_array[i][0] = "path " + i;
sorting_array[i][1] = "overview " + i;
sorting_array[i][2] = "release date " + i;
sorting_array[i][3] = "title " + i;
sorting_array[i][4] = String.valueOf(Math.random() * max_popularity); //popularity
sorting_array[i][5] = String.valueOf(Math.random() * max_rating); //average rating
}
}
public static void print_not_sorted_array() {
System.out.println("Without sorting array");
for (int i = 0; i < 20; i++) {
System.out.println(sorting_array[i][0] + " " + sorting_array[i][1] + " " + sorting_array[i][2] + " " + sorting_array[i][3] + " " + sorting_array[i][4] + " " + sorting_array[i][5]);
}
}
public static void sort_array() {
for (int i = 0; i < 20; i++) {
for (int j = i + 1; j < 20; j++) {
if (Double.valueOf(sorting_array[i][4]) < Double.valueOf(sorting_array[j][4])) {
rotate_members(i, j);
}
}
}
}
public static void rotate_members(int i, int j) {
String temp_column_0 = sorting_array[i][0];
String temp_column_1 = sorting_array[i][1];
String temp_column_2 = sorting_array[i][2];
String temp_column_3 = sorting_array[i][3];
String temp_column_4 = sorting_array[i][4];
String temp_column_5 = sorting_array[i][5];
sorting_array[i][0] = sorting_array[j][0];
sorting_array[i][1] = sorting_array[j][1];
sorting_array[i][2] = sorting_array[j][2];
sorting_array[i][3] = sorting_array[j][3];
sorting_array[i][4] = sorting_array[j][4];
sorting_array[i][5] = sorting_array[j][5];
sorting_array[j][0] = temp_column_0;
sorting_array[j][1] = temp_column_1;
sorting_array[j][2] = temp_column_2;
sorting_array[j][3] = temp_column_3;
sorting_array[j][4] = temp_column_4;
sorting_array[j][5] = temp_column_5;
}
public static void print_sorted_array() {
System.out.println("With sorting array");
for (int i = 0; i < 20; i++) {
System.out.println(sorting_array[i][0] + " " + sorting_array[i][1] + " " + sorting_array[i][2] + " " + sorting_array[i][3] + " " + sorting_array[i][4] + " " + sorting_array[i][5]);
}
}
public static void populate_array_list() {
for (int i = 0; i < 20; i++) {
sorting_array_list.add(new MovieSomething(sorting_array[i][0], sorting_array[i][1], sorting_array[i][2], sorting_array[i][3], Double.valueOf(sorting_array[i][4]), Double.valueOf(sorting_array[i][5])));
}
}
public static void print_not_sorted_array_list() {
System.out.println("Without sorting array list");
sorting_array_list.stream().forEach((movie) -> {
System.out.println(movie.toString());
});
}
public static void sort_array_list() {
Collections.sort(sorting_array_list, new Comparator<MovieSomething>() {
@Override
public int compare(MovieSomething fruit2, MovieSomething fruit1) {
if (fruit1.popularity > fruit2.popularity) {
return 1;
} else {
return -1;
}
}
}
);
}
public static void print_sorted_array_list() {
System.out.println("With sorting array list");
sorting_array_list.stream().forEach((movie) -> {
System.out.println(movie.toString());
});
}
public static void to_multi_d_string_array() {
int i = 0;
for (MovieSomething movie : sorting_array_list) {
sorting_array[i][0] = movie.path;
sorting_array[i][1] = movie.overview;
sorting_array[i][2] = movie.release_date;
sorting_array[i][3] = movie.title;
sorting_array[i][4] = String.valueOf(movie.popularity);
sorting_array[i][5] = String.valueOf(movie.average_rating);
i += 1;
}
}
public static class MovieSomething {
public final String path;
public final String overview;
public final String release_date;
public final String title;
public final double popularity;
public final double average_rating;
public MovieSomething(String path, String overview, String release_date, String title, double popularity, double average_rating) {
this.path = path;
this.overview = overview;
this.release_date = release_date;
this.title = title;
this.popularity = popularity;
this.average_rating = average_rating;
}
@Override
public String toString() {
return "MovieSomething{" + "path=" + path + ", overview=" + overview + ", release_date=" + release_date + ", title=" + title + ", popularity=" + popularity + ", average_rating=" + average_rating + '}';
}
}
}
質問に回答し、良い習慣についても説明します。いい答え! – shalafi
まず最初はすごくお返事いただきありがとうございます。あなたの方法は本当に私のためのトリックでしたが、今はすべてがスムーズに実行されます。これを正解と評価してください! (コンパレータも見やすくなりました:)) – Mikas
@Mikasは喜んでお手伝いします:) –