How do i use an array list instead of an array for this prog
How do i use an array list instead of an array for this program
/**
* The java program PP88 that reads a file data.txt
* that contains first ,last and zip codes and
* calls the methods sort by name and sort by zip
* and prints the results to console.
* */
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class PP88
{
public static void main(String[]args)
{
new Scanner(System.in);
Person[] persons = new Person[25];
String fileName=\"data.txt\";
int i;
Scanner filescasnner=null;
try {
filescasnner=new Scanner(new File(fileName));
for(i=0;i<persons.length;i++)
{
String firstName = filescasnner.next();
String lastName = filescasnner.next();
int Zip = filescasnner.nextInt();
persons[i]= new Person(firstName, lastName, Zip);
}
filescasnner.close();
} catch (FileNotFoundException e) {
System.out.println(e.getMessage());
}
System.out.println(\"List of names and zip codes: \");
System.out.printf(\"%-15s%-15s%-15s\ \",\"FirstName\",\"LastName\",\"Zip\");
for (int j = 0; j < persons.length; j++)
{
System.out.println(persons[j]);
}
System.out.println(\"List of names sort by first name\");
//calling sortByName
sortByName(persons);
System.out.printf(\"%-15s%-15s%-15s\ \",\"FirstName\",\"LastName\",\"Zip\");
for (int j = 0; j < persons.length; j++)
{
System.out.println(persons[j].toString());
}
System.out.println(\"List of names sort by first name\");
//calling sortByZipCode
sortByZipCode(persons);
System.out.printf(\"%-15s%-15s%-15s\ \",\"FirstName\",\"LastName\",\"Zip\");
for (int j = 0; j < persons.length; j++)
{
System.out.println(persons[j].toString());
}
}
/**
* Public static method that takes persons array object
* and sorts the array by first name
* */
public static void sortByName(Person[] persons)
{
for (int i = 0; i < persons.length; i++)
{
for (int j = 0; j < persons.length-1; j++)
{
if(persons[j].getFirstName().compareTo(persons[j+1].getFirstName())>0)
{
Person temp=persons[j];
persons[j]=persons[j+1];
persons[j+1]=temp;
}
}
}
}
/**
* Public static method that takes persons array object
* and sorts the array by zip code
* */
public static void sortByZipCode(Person[] persons)
{
for (int i = 0; i < persons.length; i++)
{
for (int j = 0; j < persons.length-1; j++)
{
if(persons[j].getZipCode()>persons[j+1].getZipCode())
{
Person temp=persons[j];
persons[j]=persons[j+1];
persons[j+1]=temp;
}
}
}
}
}
------------------------------------------------------------------------------------------
//Person.java
public class Person
{
private String firstName, lastName;
private int Zip;
public Person(String firstName,String lastName, int Zip)
{
this.firstName=firstName;
this.lastName=lastName;
this.Zip=Zip;
}
public String getFirstName(){
return firstName;
}
public int getZipCode(){
return Zip;
}
public String toString()
{
return String.format(\"%-15s%-15s%-10d\",firstName,lastName,Zip);
}
}
------------------------------------------------------------------------------------------
data.txt
Hayden Asher 1232
Alethia Eccles 2324
Hailey Exline 4242
Jaleesa Nightingale 4224
Carlene Veach 4242
Joye Vigil 4244
Glynda Sinha 6656
Rita Hartin 5657
Luis Lind 6878
Jacquelin Chill 5675
Roselyn Germano 5754
Louanne Tondreau 3465
Dessie Dials 9889
Usha Feenstra 4535
Isaac Stallings 3543
Libbie Brame 7657
Jeane Hylton 5756
Stephine Fudge 3634
Sabine Kain 3676
Glayds Mcgilvray 4364
Keven Oday 6436
Angella Raphael 6354
Pamala Lipinski 3576
Mitsue Lehner 6465
Kara Woolsey 4643
------------------------------------------------------------------------------------------
Sample Output:
List of names and zip codes:
FirstName LastName Zip
Hayden Asher 1232
Alethia Eccles 2324
Hailey Exline 4242
Jaleesa Nightingale 4224
Carlene Veach 4242
Joye Vigil 4244
Glynda Sinha 6656
Rita Hartin 5657
Luis Lind 6878
Jacquelin Chill 5675
Roselyn Germano 5754
Louanne Tondreau 3465
Dessie Dials 9889
Usha Feenstra 4535
Isaac Stallings 3543
Libbie Brame 7657
Jeane Hylton 5756
Stephine Fudge 3634
Sabine Kain 3676
Glayds Mcgilvray 4364
Keven Oday 6436
Angella Raphael 6354
Pamala Lipinski 3576
Mitsue Lehner 6465
Kara Woolsey 4643
List of names sort by first name
FirstName LastName Zip
Alethia Eccles 2324
Angella Raphael 6354
Carlene Veach 4242
Dessie Dials 9889
Glayds Mcgilvray 4364
Glynda Sinha 6656
Hailey Exline 4242
Hayden Asher 1232
Isaac Stallings 3543
Jacquelin Chill 5675
Jaleesa Nightingale 4224
Jeane Hylton 5756
Joye Vigil 4244
Kara Woolsey 4643
Keven Oday 6436
Libbie Brame 7657
Louanne Tondreau 3465
Luis Lind 6878
Mitsue Lehner 6465
Pamala Lipinski 3576
Rita Hartin 5657
Roselyn Germano 5754
Sabine Kain 3676
Stephine Fudge 3634
Usha Feenstra 4535
List of names sort by first name
FirstName LastName Zip
Hayden Asher 1232
Alethia Eccles 2324
Louanne Tondreau 3465
Isaac Stallings 3543
Pamala Lipinski 3576
Stephine Fudge 3634
Sabine Kain 3676
Jaleesa Nightingale 4224
Carlene Veach 4242
Hailey Exline 4242
Joye Vigil 4244
Glayds Mcgilvray 4364
Usha Feenstra 4535
Kara Woolsey 4643
Rita Hartin 5657
Jacquelin Chill 5675
Roselyn Germano 5754
Jeane Hylton 5756
Angella Raphael 6354
Keven Oday 6436
Mitsue Lehner 6465
Glynda Sinha 6656
Luis Lind 6878
Libbie Brame 7657
Dessie Dials 9889
Solution
Hi, I have modified your program using ArrayList.
Please let me know in case of any issue.
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
public class PP88
{
public static void main(String[]args)
{
ArrayList<Person> persons = new ArrayList<Person>(25);
String fileName=\"data.txt\";
int i;
Scanner filescasnner=null;
try {
filescasnner=new Scanner(new File(fileName));
for(i=0;i<persons.size();i++)
{
String firstName = filescasnner.next();
String lastName = filescasnner.next();
int Zip = filescasnner.nextInt();
persons.add(new Person(firstName, lastName, Zip));
}
filescasnner.close();
} catch (FileNotFoundException e) {
System.out.println(e.getMessage());
}
System.out.println(\"List of names and zip codes: \");
System.out.printf(\"%-15s%-15s%-15s\ \",\"FirstName\",\"LastName\",\"Zip\");
for (int j = 0; j < persons.size(); j++)
{
System.out.println(persons.get(j));
}
System.out.println(\"List of names sort by first name\");
//calling sortByName
sortByName(persons);
System.out.printf(\"%-15s%-15s%-15s\ \",\"FirstName\",\"LastName\",\"Zip\");
for (int j = 0; j < persons.size(); j++)
{
System.out.println(persons.get(j));
}
System.out.println(\"List of names sort by first name\");
//calling sortByZipCode
sortByZipCode(persons);
System.out.printf(\"%-15s%-15s%-15s\ \",\"FirstName\",\"LastName\",\"Zip\");
for (int j = 0; j < persons.size(); j++)
{
System.out.println(persons.get(j));
}
}
/**
* Public static method that takes persons array object
* and sorts the array by first name
* */
public static void sortByName(ArrayList<Person> persons)
{
for (int i = 0; i < persons.size(); i++)
{
for (int j = 0; j < persons.size()-1; j++)
{
if((persons.get(j).getFirstName().compareTo(persons.get(j+1).getFirstName()))>0)
{
Person temp= persons.get(j);
persons.set(j, persons.get(j+1));
persons.set(j+1, temp);
}
}
}
}
/**
* Public static method that takes persons array object
* and sorts the array by zip code
* */
public static void sortByZipCode(ArrayList<Person> persons)
{
for (int i = 0; i < persons.size(); i++)
{
for (int j = 0; j < persons.size()-1; j++)
{
if(persons.get(j).getZipCode()>persons.get(j+1).getZipCode())
{
Person temp= persons.get(j);
persons.set(j, persons.get(j+1));
persons.set(j+1, temp);
}
}
}
}
}





