1

我试图按照Sort an arraylist of objects in java的建议在我的程序中实现排序方法,但无法使其正常工作。我收到错误“找不到符号 - 方法排序()”

Appologies 我是 Java 新手。

入学等级:

/**
 * 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;
}

}

地址簿类:

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 类:

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();
}

}
4

3 回答 3

4

假设您指的是:entries.sort();,您需要调用Collections.sort(List<T> list)or Collection.sort(List<T> list, Comparator<T> comparator)

compareTo两者之间的区别在于第一个使用默认行为,可以通过实现接口指定的方法在您将排序的对象中指定,Comparable而第二个允许您传递比较器对象。这将允许您对相同的列表进行不同的排序。

于 2013-03-01T08:11:59.550 回答
3

你需要使用Collections.sort(List<T> list).

列表是一个接口。ArrayList 间接实现 List 接口。

于 2013-03-01T08:10:56.077 回答
1
  1. 使 Entry 实现 Comparable:

    公共类 Entry 实现 Comparable

  2. 添加 int compareTo(Entry otherEntry) 方法(简化伪代码):

    if this > otherEntry return 1
    else if this < otherEntry return -1
    else return 0
    
  3. 调用 Collections.sort(你的 Entries 数组)

于 2013-03-01T08:17:00.387 回答