Java 如何使用compareTo方法按字母顺序对字符串的ArrayList排序?
我是一名业余程序员,我创建了一个程序,其中包含一个arraylist,其中包含不同的电话簿联系人,我正在尝试使用compareTo方法对arraylist进行字典排序。我不知道如何在main方法中正确调用该方法,以使其正确排序,并且不允许使用集合排序。有人能帮我吗 以下是我的一些代码:Java 如何使用compareTo方法按字母顺序对字符串的ArrayList排序?,java,arraylist,compareto,lexicographic,Java,Arraylist,Compareto,Lexicographic,我是一名业余程序员,我创建了一个程序,其中包含一个arraylist,其中包含不同的电话簿联系人,我正在尝试使用compareTo方法对arraylist进行字典排序。我不知道如何在main方法中正确调用该方法,以使其正确排序,并且不允许使用集合排序。有人能帮我吗 以下是我的一些代码: public class Phonebook implements Comparable<Phonebook> { private String first, last;
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;
}
}
如果项“较大”,则compare to方法返回1;如果它们相等,则返回0;如果项“较小”,则返回-1 这应该起作用:
int compareTo (PhoneBook o) {
for(int i = 0; i < first.size(); i++) {
if (i >= o.first.size())
return 1;
if ((int)first.charAt(i) > (int)o.first.charAt(i))
return -1;
else if ((int)first.charAt(i) < (int)o.first.charAt(i))
return 1;
}
for(int i = 0; i < last.size(); i++) {
if (i >= o.last.size())
return 1;
if ((int)last.charAt(i) > (int)o.last.charAt(i))
return -1;
else if ((int)last.charAt(i) < (int)o.last.charAt(i))
return 1;
}
return 0;
}
int compareTo(电话簿o){
对于(int i=0;i=o.first.size())
返回1;
if((int)first.charAt(i)>(int)o.first.charAt(i))
返回-1;
如果((int)first.charAt(i)<(int)o.first.charAt(i))
返回1;
}
对于(int i=0;i=o.last.size())
返回1;
if((int)last.charAt(i)>(int)o.last.charAt(i))
返回-1;
else如果((int)last.charAt(i)<(int)o.last.charAt(i))
返回1;
}
返回0;
}
这只是检查ASCII值是否更大。(所有字母都必须是小写或大写)那么,你是否需要将排序算法作为本作业的一部分?Use can reference@Martin'sRun不太可能,我的教授刚刚告诉我们,存储在arraylist中的名称应按compareTo()的排序顺序存储methodComparable和compareTo方法定义了排序,即什么小什么大,但是如果要使用ArrayList,则必须单独进行排序。因为collections.sort是不允许的,我假设其他选项,如list.sort或stream.sorted也不允许?@Martin'sRun是的,它们不允许
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);
}
int compareTo (PhoneBook o) {
for(int i = 0; i < first.size(); i++) {
if (i >= o.first.size())
return 1;
if ((int)first.charAt(i) > (int)o.first.charAt(i))
return -1;
else if ((int)first.charAt(i) < (int)o.first.charAt(i))
return 1;
}
for(int i = 0; i < last.size(); i++) {
if (i >= o.last.size())
return 1;
if ((int)last.charAt(i) > (int)o.last.charAt(i))
return -1;
else if ((int)last.charAt(i) < (int)o.last.charAt(i))
return 1;
}
return 0;
}