我覺得是更好,如果你必須將它們轉換成多維字符串數組在Java(當我看到我的代碼可以更容易地找出我想做的事)的對象,比上班。看看這兩種解決方案,首先是你想要的,第二我是我的建議。希望它可以幫助你。
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高興地幫助:) –