使用Collections.sort()找不到符号错误排序集合

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)

Rad*_*def 7

集合#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方法族等地方的参数.