Lad*_*bro 1 java collections arraylist
编辑:解决了!谢谢大家.
我正在尝试使用比较器在Java中对一个集合进行排序而没有运气.这是我的代码:
public class Collections_Exercise {
public void runExercise(){
String[] emailArray = {"andy@test.com","paul@test.com","cindy@test.com", "robert@test.com", "bill@test.com", "andy@test.com", "cindy@test.com"};
Collection<String>emails = new ArrayList<String>(Arrays.asList(emailArray));
processEmails(emails);
// 5. Call processEmails with a sorted list of emails with duplicate email addresses removed
System.out.println("Sorted list of emails with no dups!");
class alphabeticalComparator implements Comparator<String>
{
@Override
public int compare(String email1, String email2)
{
int result = email1.toString().compareTo(email2.toString());
return result;
}
}
Collections.sort(emails, new alphabeticalComparator()); //Doesn't work, can't find collections.sort() symbol
processEmails(emails);
private void processEmails(Collection<String> emails)
{
for( String s : emails)
System.out.println(s);
}
public static void main(String [] args)
{
new Collections_Exercise().runExercise();
}
}
Run Code Online (Sandbox Code Playgroud)
无论我尝试什么,我都无法让Collections.sort()工作.有小费吗?
编辑:这是终端给我的错误:
Collections_Exercise.java:58: cannot find symbol
symbol : method sort(java.util.Collection<java.lang.String>,alphabeticalComparator)
location: class java.util.Collections
Collections.sort(emails, new alphabeticalComparator());
Run Code Online (Sandbox Code Playgroud)
集合#sort采用a List而不是a Collection.
List<String> emails = new ArrayList<String>(Arrays.asList(emailArray));
Run Code Online (Sandbox Code Playgroud)
原因是有一些实现Collection的类无法任意重新排序.有些存储机制依赖于战略性放置的元素(例如HashSet),而其他存储机制则具有预定的排序顺序(例如TreeSet).
收藏说到这一点:
集合层次结构中的根接口.......有些是订购的,有些则是无序的.JDK [only]提供了更具体的子接口的实现,如Set和List.通常使用此接口......需要最大的通用性.
因此,为什么你只看到Collection作为转换构造函数(教程称为约定)和xxxAll方法族等地方的参数.