私はオブジェクトの配列をファーストネームで並べ替えるメソッドを持っています。しかし、私はオブジェクトの元の順序を印刷したいとき、ソートされたバージョンを印刷します。これを修正するために私は何を変えることができますか?オブジェクトの配列を並べ替える
Mainメソッド+他の方法
String[] firstNames= {"Fred","John","Amir", "James","Bob","Jay","Amber"};
String[] lastNames = {"Bond","Kates","Memar", "White","Marley","Brown","Nogofski"};
String[] idNumbers = {"R111111","A222222","AB11111", "KR22121","V311133","L242434","P102432"};
String[] employeeNum = {"1111","2222","3333", "4444","5555","6666","7777"};
Employee[] list = new Employee[firstNames.length];
list = listOfEmployees(firstNames,lastNames,idNumbers); // create the list of employees in one array
System.out.println("List of employees before sorting...\n");
printEmployeeList(list); //print the list of employees
sortWithFirstName(list);
printEmployeeList(list);
public static void printEmployeeList(Employee[] list){
String employees = Arrays.toString(list).replace("[", "").replace("]", "").replace(",", "");
System.out.println(employees);
}
public static Employee[] sortWithFirstName(Employee[] list){
System.out.println("Sorting the list with the first name");
{
boolean swap;
//String temp; //change this too
do
{
swap = false;
for (int i = 0; i < (list.length - 1); i++)
{
if (list[i].getFirstName().compareTo(list[i+1].getFirstName()) > 0) //if first number is greater then second then swap
{
//swap
Employee temp = list[i];
list[i] = list[i + 1];
list[i + 1] = temp;
swap = true;
}
}
} while (swap == true);
printEmployeeList(list);
}
return list;
}
public static class Employee{
private String firstName;
private String lastName;
private String idNumber;
private String employeeNumber;
private int employeeCount;
/**
* Constructor
* @param firstName first name
* @param lastName last name
* @param idNumber id number
*/
public Employee(String firstName, String lastName, String idNumber){
this.firstName = firstName;
this.lastName = lastName;
this.idNumber = idNumber;
employeeCount = 0;
}
/**
* Accessors here
*/
public String getFirstName(){
return firstName;
}
public String getLastName(){
return lastName;
}
public String getIdNumber(){
return idNumber;
}
public String getEmployeeNumber(){
return employeeNumber;
}
// mutators here
/**
* @param firstName first name
*/
public void setFirstName(String firstName){
this.firstName = firstName;
}
/**
* @param lastName last name
*/
public void setLastName(String lastName){
this.lastName = lastName;
}
/**
* @param idNumber id number
*/
public void setIdNumber(String idNumber){
this.idNumber = idNumber;
}
/**
* @param employeeNumber employee number
*/
public void setEmployeeNumber(String employeeNumber){
this.employeeNumber = "";
}
@Override
public String toString(){
String result = "\nFirst name: " + getFirstName() + "\nLast name: " + getLastName()
+ "\nId number: " + getIdNumber() + "\nEmployee number: ";
if(getEmployeeNumber() == null){
return result + "No employee number has been assigned yet!\n";
}
return result + getEmployeeNumber() + "\n";
}
}
ソート方法で従業員リストのローカルコピーを作成し、元のリストの代わりにそのローカルコピーをソート(および返す)します。 – Pshemo
元の注文をここで再印刷しようとしていますか? 'printEmployeeList(list); //従業員のリストを出力する sortWithFirstName(list); printEmployeeList(リスト); '?もしそうなら、リスト配列の構造を並べ替えると、元の順序をなぜ再印刷するのでしょうか? –
@ J.Scheiので、配列のコピーをsortメソッド内に作成しますか? 'Employee [] copied = Arrays.copyOf(list、list.length)'のようなものですか? – Deescomaster