Question: Using Java, modify the existing code. I t i s three classes. 1 . Replace the ArrayList in your assignment with a LinkedList from the

Using Java, modify the existing code. Itis three classes.
1. Replace the ArrayList in your assignment with a LinkedList from the Java collections. Do NOT reimplement the linked list like you did in CodeStepByStep, just use the one provided. The algorithm that you implement for your program, will be exactly the same, only the list implementation will change.
2. Compare the timing for using an ArrayList with the same timing for using a LinkedList. Try to explain what you see and make any recommendations. Also, consider your proposed algorithm from Unit 1 that rearranges Contestants in the same list. Based on your timing estimates, explain whether you think it would take more or less time using a LinkedList rather than an ArrayList.
Contestant Class:
import java.util.ArrayList;
import java.util.List;
public class Contestant extends Person {
private int currentPosition;
private List positionHistory;
// A list of integers that records the history of all positions the contestant has been in.
public Contestant(String name){
super(name);
this.positionHistory = new ArrayList<>();
}
public int getCurrentPosition(){
return currentPosition;
}
//Returns the current position of the contestant.
public void setCurrentPosition(int position){
this.currentPosition = position;
this.positionHistory.add(position);
}
// Sets the current position to the given position and adds this position to the positionHistory list.
public double getAveragePosition(){
//Calculates and returns the average of all positions stored in
int sum =0;
for (int pos : positionHistory){
sum += pos;
}
return (double) sum / positionHistory.size();
// It sums up all the positions and divides the sum by the number of positions in the list.
}
}
ContestDriver Class:
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class ContestSimulation {
private static final Random random = new Random();
public static void main(String[] args){
int numberOfContestants =10;
int numberOfRounds =12;
//Initializes a list of contestants.
List contestants = new ArrayList<>();
for (int i =0; i < numberOfContestants; i++){
contestants.add(new Contestant("Contestant "+(char)('A'+ i)));
}
for (int i =0; i < contestants.size(); i++){
contestants.get(i).setCurrentPosition(i);
}
//Runs a specified number of rounds.
for (int round =0; round < numberOfRounds; round++){
simulateRound(contestants);
}
printAveragePositions(contestants);
}
//Each round simulates contestants either answering correctly or incorrectly and updates their positions accordingly.
public static void simulateRound(List contestants){
for (int i =0; i < contestants.size(); i++){
Contestant contestant = contestants.get(i);
boolean answeredCorrectly = random.nextBoolean();
if (answeredCorrectly){
contestants.remove(i);
contestants.add(0, contestant);
} else {
contestants.remove(i);
contestants.add(contestant);
}
}
for (int i =0; i < contestants.size(); i++){
contestants.get(i).setCurrentPosition(i);
}
//After all rounds, it prints the average position of each contestant.
printContestants(contestants);
}
public static void printContestants(List contestants){
System.out.println("Current positions:");
for (Contestant contestant : contestants){
System.out.println(contestant.getName()+" at position "+ contestant.getCurrentPosition());
}
System.out.println();
}
public static void printAveragePositions(List contestants){
System.out.println("Average positions:");
for (Contestant contestant : contestants){
System.out.println(contestant.getName()+" average position "+ contestant.getAveragePosition());
}
}
}
Person Class:
public class Person {
private String name;
public Person(String name){
this.name = name;
}
// Creates a Person object with a specific name.
public String getName(){
return name;
}
// Allows external code to access the value of the private name field. It returns the current value of name.
public void setName(String name){
this.name = name;
//Allows external code to modify the value of the private name field. It takes a String argument and assigns it to the name field.
}
}

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!