-4

我正在从用户那里输入一个字符串,然后在第一步中对列表进行排序,然后在第二步中删除重复项。但是代码给出了错误。请帮忙!!!

这是代码

import java.util.*;

class stringSort
{
    public static void main(String args[])
    {
        String s1;
        char[]s2;
        System.out.println("Enter the string");
        Scanner s=new Scanner(System.in);
        s1=s.next();
        //call the sort method to sort the string
        s2=sort(s1);
        System.out.println(String.valueOf(s2));
        //remove duplicate entries in the sorted string
        SortedSet<Character> set=new TreeSet<Character>();
        set.addAll(Arrays.asList(s2));
        System.out.println(String.valueOf(set.toArray()));
    }
    static char[] sort(String s)
    {
        char []temp=s.toCharArray();
        Arrays.sort(temp);
        return temp;
    }
}

它给出了错误

no suitable method found for addAll(List<char[]>) set.addAll(Arrays.asList(s2));

4

1 回答 1

4

但是代码给出了错误

SortedSet<char> set=new TreeSet<char>();

这是非法的,不会编译。如果要使用字符集,则必须使用Character类。

SortedSet<Character> set=new TreeSet<Character>();

更新

它给出了错误没有为 addAll(List) set.addAll(Arrays.asList(s2))找到合适的方法;

那是因为你需要一个Character数组,而不是char数组,所以你有两个选择:

  1. 更改char[]s2;Character[]s2;

  2. 在调用方法之前将char数组转换为数组:Charactersort

    Character[] a = new Character[s2.length];
    System.arraycopy(s2, 0, a, 0, s2.length);
    a = sort(s1);
    

在这两种情况下,您都必须将sort方法更改为:

static Character[] sort(String s) {
    Character[] temp = new Character[s.length()];
    for (int i = 0; i < temp.length; i++) {
        temp[i] = s.charAt(i);
    }
    Arrays.sort(temp);
    return temp;
}
于 2013-10-17T14:53:47.757 回答