Java 对集合进行排序时找不到符号错误。排序()

Java 对集合进行排序时找不到符号错误。排序(),java,collections,arraylist,Java,Collections,Arraylist,编辑:已解决!谢谢大家。 我正在尝试使用Comparator对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", "an

编辑:已解决!谢谢大家。

我正在尝试使用Comparator对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();
        }
}
公共类集合\u练习{
公开演习({
字符串[]emailArray={”andy@test.com","paul@test.com","cindy@test.com", "robert@test.com", "bill@test.com", "andy@test.com", "cindy@test.com"};
Collectionemails=newArrayList(Arrays.asList(emailArray));
处理电子邮件;
//5.调用processEmails,将删除重复电子邮件地址的电子邮件排序列表
System.out.println(“没有DUP的电子邮件排序列表!”);
类AlphacalComparator实现Comparator
{
@凌驾
公共整数比较(字符串email1、字符串email2)
{
int result=email1.toString().compareTo(email2.toString());
返回结果;
}
}
Collections.sort(电子邮件,新的字母比较器());//不起作用,找不到Collections.sort()符号
处理电子邮件;
私人作废处理电子邮件(收集电子邮件)
{
用于(字符串s:电子邮件)
系统输出打印项次;
}
公共静态void main(字符串[]args)
{
新集合_Exercise().runExercise();
}
}
不管我怎么做,我都无法让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());
Collections\u Exercise.java:58:找不到符号
符号:方法排序(java.util.Collection,字母比较器)
位置:类java.util.Collections
Collections.sort(电子邮件、新的字母比较器());
采用的是
列表
,而不是
集合

List<String> emails = new ArrayList<String>(Arrays.asList(emailArray));
List emails=newarraylist(Arrays.asList(emailArray));
这是因为有些类实现的集合不能被任意重新排序。有些类的存储机制依赖于策略性地放置的元素(如HashSet),而另一些类具有预先确定的排序顺序(如TreeSet)

他说:

集合层次结构中的根接口…有些是有序的,有些是无序的。JDK[仅]提供了更具体的子接口(如Set和List)的实现。此接口通常用于…需要最大通用性的地方

因此,为什么在转换构造函数(调用约定)和方法系列中,您只将集合视为参数。

采用
列表,而不是
集合

List<String> emails = new ArrayList<String>(Arrays.asList(emailArray));
List emails=newarraylist(Arrays.asList(emailArray));
这是因为有些类实现的集合不能被任意重新排序。有些类的存储机制依赖于策略性地放置的元素(如HashSet),而另一些类具有预先确定的排序顺序(如TreeSet)

他说:

集合层次结构中的根接口…有些是有序的,有些是无序的。JDK[仅]提供了更具体的子接口(如Set和List)的实现。此接口通常用于…需要最大通用性的地方

因此,为什么在转换构造函数(调用约定)和方法族等位置,您只将集合视为参数。

您缺少一个

}
处理后的电子邮件(电子邮件)

你必须从

Collection<String>
收藏

列表
你错过了一个

}
处理后的电子邮件(电子邮件)

你必须从

Collection<String>
收藏

列表
尝试更换:

原创的

Collection<String>emails = new ArrayList<String>(Arrays.asList(emailArray));
Collectionemails=newarraylist(Arrays.asList(emailArray));
新的

ListString>emails=newarraylist(Arrays.asList(emailArray));
按照Java API Collections.sort accept List进行排序。

尝试替换:

原创的

Collection<String>emails = new ArrayList<String>(Arrays.asList(emailArray));
Collectionemails=newarraylist(Arrays.asList(emailArray));
新的

ListString>emails=newarraylist(Arrays.asList(emailArray));

根据Java API Collections.sort accept List.

在Java中,根据定义,类型为
Collection
的容器没有顺序,因此无法排序。只能对其子容器
List
进行排序

因此,该方法需要一个
List
类型的对象作为第一个参数,但您提供的是一个集合

改变

Collection<String> emails = new ArrayList<String>(Arrays.asList(emailArray));
Collection emails=newarraylist(Arrays.asList(emailArray));
进入

列出电子邮件=。。。

在Java中,根据定义,类型为
集合的容器没有顺序,因此无法排序。只能对其子
列表进行排序

因此,该方法需要一个
List
类型的对象作为第一个参数,但您提供的是一个集合

改变

Collection<String> emails = new ArrayList<String>(Arrays.asList(emailArray));
Collection emails=newarraylist(Arrays.asList(emailArray));
进入

列出电子邮件=。。。
List emails=Arrays.asList(emailArray);
Collections.sort(电子邮件、新的字母比较器());
List emails=Arrays.asList(emailArray);
Collections.sort(电子邮件、新的字母比较器());
Collections.sort()
需要的是
列表
而不是
集合
,请参见。因此,而不是

Collection<String>emails = new ArrayList<String>(Arrays.asList(emailArray));    
Collectionemails=newarraylist(Arrays.asList(emailArray));
应该是

final List<String>emails = Arrays.asList(emailArray);
final-Listemails=Arrays.asList(emailArray);
Collections.sort()
需要的是
列表
而不是
集合
,请参见。因此,而不是

Collection<String>emails = new ArrayList<String>(Arrays.asList(emailArray));    
Collectionemails=newarraylist(Arrays.asList(emailArray));
应该是

final List<String>emails = Arrays.asList(emailArray);
final-Listemails=Arrays.asList(emailArray);