У меня есть задание для моего класса для сортировки LinkedList, который мы сделали ранее, используя метод сортировки вставки. Мы создали список, прочитав в файле excel список из 5 участников. Я понимаю, что это звучит как повторяющийся вопрос ... однако, все образцы, которые я могу найти, имеют дело с целыми или массивами, ничто из того, что я могу найти со строками или с LinkedList, как тот, который я использую. Другая проблема, примеры, которые я нахожу, которые касаются более чем целых чисел, предполагают, что вы сделали список «с нуля», используя Head и Node, и так далее ... как вы можете видеть в моем коде, я не сделал свой с нуля, я просто использовал сборку в утилите Java, чтобы сделать мой. В любом случае, мой код может быть не очень эффективным, но до сих пор у меня есть 100 на каждое задание, поэтому он достаточно хорош для школы, я думаю, но любые предложения, чтобы сделать ее лучше, также приветствуются. Я начинаю программировать, только опыт у меня есть предыдущие классы. Итак, вот мой код:Сортировка связанного списка с использованием метода сортировки вставки в Java
import java.io.*;
import java.util.*;
public class ChrisJohnson_Unit3_IP {
static class Contributor{ //create class to store contributor information
//declare variables
private String firstName;
private String lastName;
private String country;
private String phone;
private double contribution;
private int id;
//methods for setting variable values
public String getFirstName(){
return firstName;
}
public void setFirstName(String firstName){
this.firstName = firstName;
}
public String getLastName(){
return lastName;
}
public void setLastName(String lastName){
this.lastName = lastName;
}
public String getCountry(){
return country;
}
public void setCountry(String country){
this.country = country;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone){
this.phone = phone;
}
public double getContribution(){
return contribution;
}
public void setContribution(double contribution){
this.contribution = contribution;
}
public int getId(){
return id;
}
public void setId(int id){
this.id = id;
}
public void Print(){//method to print class objects
System.out.printf("%-10s %-10s %-8s %-15s %s %-15s %d %n", firstName, lastName, country,
phone, "$", contribution, id);
}
}//end Contributor class
static LinkedList contributorList = new LinkedList(); //create new Contributor Linked List
static Hashtable<String, Contributor> memberID = new Hashtable<>();//create new Hash Table
public static void main(String[] arg) throws Exception {
String response;
String ID;
Contributor contributorData = null;
Scanner in = new Scanner(System.in);
//print Welcome message and describe program to user
System.out.println("Welcome! This program will read your contributors.csv file "
+ "and store it into a list. \nTThe program will then sort the list and"
+ "print it for you to view/n");
System.out.println("Press enter to read the currently saved contributors.csv file...");
in.nextLine();
BufferedReader File =
new BufferedReader(new FileReader("contributors.csv"));
String dataRow = File.readLine(); // Read first line.
// The while checks to see if the data is null. If
// it is, end of file has been reached. If not,
// data will be processed.
while (dataRow != null){//While to read contributors.csv file and store in Contributor object
String[] data = dataRow.split(",");
contributorData = new Contributor(); //create new Contributor object
//store data into Contributor object
contributorData.setFirstName(data[0]);
contributorData.setLastName(data[1]);
contributorData.setCountry(data[2]);
contributorData.setPhone(data[3]);
contributorData.setContribution(Double.parseDouble(data[4]));
contributorData.setId(Integer.parseInt(data[5]));
ID = Integer.toString(contributorData.getId());
contributorList.push(contributorData);//add object to top of contributorList
memberID.put(ID,contributorData);//add contributor ID to key element of Hash Table
dataRow = File.readLine(); // Read next line of data.
}//end While to read contributors.csv file
File.close();//close CSV file
System.out.println("Here is your unsorted contributor list:\n");
//call Print method to print the list
System.out.printf("%-10s %-10s %-8s %-15s %-17s %s %n", "First", "Last",
"Country", "Phone #", "Contribution", "ID");
Iterator<Contributor> iter = contributorList.iterator();
while(iter.hasNext()){
iter.next().Print();
}//end while
System.out.println("Thank you for using this program!");
} //main()
}//end ChrisJohnson_Unit3_IP class
Опять же, список должен быть отсортирован по имени, используя метод сортировки вставки. Я понимаю основную концепцию метода сортировки, но, честно говоря, не знаю, как ее реализовать здесь. Я не ищу, чтобы кто-то выполнял мою домашнюю работу для меня, просто дайте мне толчок в правильном направлении. Любая помощь будет принята с благодарностью, если вам нужна дополнительная информация, пожалуйста, дайте мне знать. Это задание должно состояться в понедельник, поэтому, надеюсь, кто-то сможет мне помочь. И да, я уже написал своего инструктора, просящего о помощи, я всю неделю был вне города, поэтому я пытался играть в догонялки. Спасибо, что нашли время, чтобы прочитать мой вопрос.
Почему? Назначение идиот. Только сумасшедший будет сортировать связанный список. – EJP
Полностью согласен .... этот класс полностью заторможен, задания разочаровывают, потому что никто в реальном мире не будет делать что-либо из того, что мы изучаем ... но, к сожалению, я должен сделать это следующим образом:/Чтобы оставить «хороший» обзор этого класса, когда все закончится ... –