Я пытаюсь добавить данные из класса в arraylist, затем объединить их, и у меня возник вопрос. Как я могу подключить данные из многих arraylist, чтобы показать их после сортировки? Мне нужно напечатать имя, фамилию и возраст в одной строке после сортировки по данным из одного массива. Есть ли лучший способ добавить данные из класса в arraylist?
Main:
package mergesort_main;
import java.util.ArrayList;
public class MergeSort_main {
static ArrayList name = new ArrayList<>();
static ArrayList lastName = new ArrayList<>();
static ArrayList age = new ArrayList<>();
public static void main(String[] args) {
User User1 = new User("usernameA", "lastNameA", 28);
User User2 = new User("usernameB", "lastNameB", 53);
User User3 = new User("usernameC", "lastNameC", 33);
name.add(User1.getName());
lastName.add(User1.getLastName());
age.add(User1.getAge());
name.add(User2.getName());
lastName.add(User2.getLastName());
age.add(User2.getAge());
name.add(User3.getName());
lastName.add(User3.getLastName());
age.add(User3.getAge());
System.out.println("Sorted by: name");
System.out.println("*************************************");
MergeSort test = new MergeSort(name);
test.sort();
test.show();
System.out.println("*************************************\n\n");
System.out.println("Sorted by: lastname");
System.out.println("*************************************");
MergeSort test = new MergeSort(name);
test.sort();
test.show();
System.out.println("*************************************/n/n");
/*System.out.println("Sorted by: age");
System.out.println("*************************************");
MergeSort test = new MergeSort(age);
test.sort();
test.show();
System.out.println("*************************************");*/
}
}
Mergesort:
package mergesort_main;
import java.util.ArrayList;
import static mergesort_main.MergeSort_main.age;
import static mergesort_main.MergeSort_main.lastName;
public class MergeSort {
private ArrayList strList;
public MergeSort(ArrayList<String> input) {
strList = input;
}
public void sort() {
strList = mergeSort(strList);
}
ArrayList<String> mergeSort(ArrayList<String> whole) {
ArrayList<String> left = new ArrayList<>();
ArrayList<String> right = new ArrayList<>();
int center;
if (whole.size() == 1) {
return whole;
} else {
center = whole.size() / 2;
for (int i = 0; i < center; i++) {
left.add(whole.get(i));
}
for (int i = center; i < whole.size(); i++) {
right.add(whole.get(i));
}
left = mergeSort(left);
right = mergeSort(right);
merge(left, right, whole);
}
return whole;
}
private void merge(ArrayList<String> left, ArrayList<String> right, ArrayList<String> whole) {
int leftIndex = 0;
int rightIndex = 0;
int wholeIndex = 0;
while (leftIndex < left.size() && rightIndex < right.size()) {
if ((left.get(leftIndex).compareTo(right.get(rightIndex))) < 0) {
whole.set(wholeIndex, left.get(leftIndex));
leftIndex++;
} else {
whole.set(wholeIndex, right.get(rightIndex));
rightIndex++;
}
wholeIndex++;
}
ArrayList<String> rest;
int restIndex;
if (leftIndex >= left.size()) {
rest = right;
restIndex = rightIndex;
} else {
rest = left;
restIndex = leftIndex;
}
for (int i = restIndex; i < rest.size(); i++) {
whole.set(wholeIndex, rest.get(i));
wholeIndex++;
}
}
public void show() {
System.out.println("Name: Lastname: Age:");
for (int i = 0; i < strList.size(); i++) {
System.out.println(strList.get(i) + " " + lastName.get(i) + " " + age.get(i));
}
}
}
Class:
package mergesort_main;
public class User {
public String name = null;
public String lastName = null;
public Integer age = 0;
User(String name, String lastName, int age) {
this.name = name;
this.lastName = lastName;
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public void setAge(int age) {
this.age = age;
}
public String getName() { return this.name; }
public String getLastName() { return this.lastName; }
public int getAge() { return this.age; }
}