Reputation: 369
Im trying to implement a sort method into my program following the advice from Sort an arraylist of objects in java but could not get this working. I get the error "Cannot find symbol - method sort()"
Appologies im new to java..
Entry Class:
/**
* The Entry class represents a persons address entry into the system.
* It holds the persons name and address information
*
*/
public class Entry
{
// the person's full name
private String name;
// the steet namd or number
private String street;
// the town
private String town;
// postcode
private String postcode;
/**
* Create a new entry with a given name and address details.
*/
public Entry(String strName, String strStreet, String strTown, String strPostcode)
{
name = strName;
street = strStreet;
town = strTown;
postcode = strPostcode;
}
/**
* Return the address for this person. The address shows the
* street, town and postcode for the person
* @return address
*/
public String getAddress()
{
return name + ", " + street + ", " + town + ", " + postcode;
}
}
AddressBook class:
import java.util.*;
/**
* The AddressBook class represents an address book holding multiple persons details. It stores
* the name, street, town, postcode and number of entries.
*/
public class AddressBook
{
private ArrayList < Entry > entries;
/**
* Create a an AddressBook with no limit on the number of entries
*/
public AddressBook()
{
entries = new ArrayList < Entry >();
}
/**
* Return the number of address book entries
* @return the entry amount
*/
public String getAddressBook()
{
String listEntries = "Address Book\n";
listEntries = listEntries + "\nNumber of entries: " + numberOfEntries() +"\n";
entries.sort();
for (int i = 0; i < entries.size(); i++) {
System.out.println(entries.get(i));
}
return listEntries;
}
AddressBookTextUI Class:
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Provides a text based user interface for the AddressBook project.
*
*/
public class AddressBookTextUI {
private AddressBook addressBook;
Scanner myScanner;
/**
* Constructor for objects of class TextUI
*/
public AddressBookTextUI()
{
addressBook = new AddressBook();
myScanner = new Scanner(System.in);
}
private void fullCommand()
{
System.out.println(addressBook.getAddressBook());
clearScreen();
}
}
Upvotes: 1
Views: 1517
Reputation: 3070
Make Entry implements Comparable:
public class Entry implements Comparable
Add int compareTo(Entry otherEntry) method (simplified pseudocode):
if this > otherEntry return 1
else if this < otherEntry return -1
else return 0
Call Collections.sort(your array of Entries)
Upvotes: 1
Reputation: 52185
Assuming you are referring to this: entries.sort();
, you would need to call Collections.sort(List<T> list)
or Collection.sort(List<T> list, Comparator<T> comparator)
.
The difference between the two is that the first one uses a default behaviour, which can be specified in the object you will be sorting by implementing the compareTo
method specified by the Comparable
interface while the second allows you to pass a comparator object. This would allow you to sort the same list differently.
Upvotes: 4
Reputation: 3827
You need to use Collections.sort(List<T> list)
.
List is an interface. ArrayList indirect implements List interface.
Upvotes: 3