java实现通讯录排序功能的源代码及代码详细说明

这是一个用Java编写的简单的通讯录程序,实现了添加联系人、删除联系人、按名称排序、按电话号码排序和显示联系人等功能。下面对代码进行详细说明:

  1. 定义了一个Contact类,它包含两个属性:名称和电话号码。该类还提供了一个构造函数、两个获取属性值的方法和一个toString()方法,用于将对象转换为字符串。
  2. ContactList类是程序的主类,它定义了一个静态成员变量contacts,用于存储所有的联系人。该类还提供了五个方法,分别对应程序的五个功能:

    a. addContact()方法:用于添加联系人。用户输入联系人的名称和电话号码,创建一个Contact对象,并将其添加到contacts列表中。

    b. deleteContact()方法:用于删除联系人。用户输入联系人的名称,程序在contacts列表中查找匹配的联系人,并将其从列表中删除。

    c. sortContactsByName()方法:用于按名称排序。程序使用Collections.sort()方法和一个比较器(Comparator)将contacts列表按照联系人名称进行排序。

    d. sortContactsByPhoneNumber()方法:用于按电话号码排序。程序使用Collections.sort()方法和一个比较器(Comparator)将contacts列表按照联系人电话号码进行排序。

    e. displayContacts()方法:用于显示所有联系人。如果contacts列表为空,则程序输出"No contacts found";否则,程序遍历contacts列表并输出每个联系人的名称和电话号码。

  3. main()方法中,程序使用一个Scanner对象从控制台获取用户输入,并根据用户输入的选项调用相应的方法。当用户输入6时,程序退出循环并结束执行。
  4. sortContactsByName()sortContactsByPhoneNumber()方法中,程序使用一个匿名内部类创建了一个比较器,以便对contacts列表进行排序。比较器定义了compare()方法,用于比较两个联系人的名称或电话号码。Collections.sort()方法使用这个比较器对contacts列表进行排序。

总之,这是一个简单的通讯录程序,它使用了Java的基本语法和一些集合框架类库,实现了一些基本的功能。

以下是使用Java编写的通讯录排序功能源代码示例:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;

public class ContactList {

    private static List<Contact> contacts = new ArrayList<Contact>();

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        boolean quit = false;
        int choice;

        while (!quit) {

            System.out.println("Enter your choice:");
            System.out.println("1. Add Contact");
            System.out.println("2. Delete Contact");
            System.out.println("3. Sort Contacts by Name");
            System.out.println("4. Sort Contacts by Phone Number");
            System.out.println("5. Display Contacts");
            System.out.println("6. Quit");

            choice = scanner.nextInt();

            switch (choice) {
            case 1:
                addContact(scanner);
                break;
            case 2:
                deleteContact(scanner);
                break;
            case 3:
                sortContactsByName();
                break;
            case 4:
                sortContactsByPhoneNumber();
                break;
            case 5:
                displayContacts();
                break;
            case 6:
                quit = true;
                break;
            default:
                System.out.println("Invalid choice");
            }
        }

        scanner.close();
    }

    private static void addContact(Scanner scanner) {
        System.out.println("Enter name:");
        String name = scanner.next();
        System.out.println("Enter phone number:");
        String phoneNumber = scanner.next();
        contacts.add(new Contact(name, phoneNumber));
        System.out.println("Contact added");
    }

    private static void deleteContact(Scanner scanner) {
        System.out.println("Enter name:");
        String name = scanner.next();
        Contact contactToDelete = null;
        for (Contact contact : contacts) {
            if (contact.getName().equals(name)) {
                contactToDelete = contact;
                break;
            }
        }
        if (contactToDelete != null) {
            contacts.remove(contactToDelete);
            System.out.println("Contact deleted");
        } else {
            System.out.println("Contact not found");
        }
    }

    private static void sortContactsByName() {
        Collections.sort(contacts, new Comparator<Contact>() {
            public int compare(Contact c1, Contact c2) {
                return c1.getName().compareTo(c2.getName());
            }
        });
        System.out.println("Contacts sorted by name");
    }

    private static void sortContactsByPhoneNumber() {
        Collections.sort(contacts, new Comparator<Contact>() {
            public int compare(Contact c1, Contact c2) {
                return c1.getPhoneNumber().compareTo(c2.getPhoneNumber());
            }
        });
        System.out.println("Contacts sorted by phone number");
    }

    private static void displayContacts() {
        if (contacts.isEmpty()) {
            System.out.println("No contacts found");
        } else {
            for (Contact contact : contacts) {
                System.out.println(contact);
            }
        }
    }
}

class Contact {
    private String name;
    private String phoneNumber;

    public Contact(String name, String phoneNumber) {
        this.name = name;
        this.phoneNumber = phoneNumber;
    }

    public String getName() {
        return name;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public String toString() {
        return name + " " + phoneNumber;
    }
}

在此示例中,通讯录联系人被表示为Contact类的对象,其中包含名称和电话号码。 ContactList类包含添加,删除,按名称或电话号码排序以及显示通讯录联系人的方法。