【发布时间】:2019-10-03 04:19:27
【问题描述】:
我是一名业余程序员,我创建了一个程序,其中包含一个包含不同电话簿联系人的数组列表,我正在尝试使用 compareTo 方法按字典顺序对数组列表进行排序。我不知道如何正确调用 main 方法中的方法,以便正确排序,并且不允许使用集合排序。谁能帮帮我?
这是我的一些代码:
public class Phonebook implements Comparable<Phonebook> {
private String first, last;
public Contact(String first, String last) {
this.first = first;
this.last= last;
}
public String getFirst() {return first;}
public String getLast() {return last;}
public String toString() {
return first + " " + last;
}
public int compareTo(Phonebook another) {
int a = last.compareTo(another.last);
int b = first.compareTo(another.first);
if (a== 0 && b== 0)
return 0;
if (a == 0 && b!= 0)
return b;
return a;
}
}
public class PhonebookList implements Iterable<Phonebook>{
ArrayList<Phonebook>phonebook;
public PhonebookList() {
}
public PhonebookList(Contact[]contacts) {
phonebook=new ArrayList<>(Arrays.asList(phonebooks));
}
import java.util.*;
public static void main(String[] args) {
// TODO Auto-generated method stub
PhonebookList list= new PhonebookList();
Phonebook ph1= new Phonebook ("Brandon","Johnson");
Phonebook ph2 = new Phonebook ("Samantha","Joseph");
list.add(ph1);
list.add(ph2);
}
【问题讨论】:
-
那么您是否需要在此作业中实现排序算法?
-
@Martin'sRun 不是真的,我的教授只是告诉我们,存储在arraylist 中的名称应该通过 compareTo() 方法按排序顺序存储
-
Comparable 和 compareTo 方法定义了排序,什么更小,什么更大,但是如果要使用 ArrayList,则必须单独进行排序。由于 collections.sort 是不允许的,我假设其他替代方案,如 list.sort 或 stream.sorted 也不允许?
-
@Martin'sRun 是的,他们不是
标签: java arraylist compareto lexicographic