0

我正在用 Absolute Java 做一项练习。
问题是:编写一个静态方法,将部分填充的字符数组作为形式参数,并从数组中删除所有重复的字母。该方法应该有两个形式参数:一个数组参数和一个 int 类型的形式参数,它给出了使用的数组位置的数量。当字母被删除时,剩余的字母移动一个位置以填补空白。

我想到的是使用hashset,它应该是最简单的方法。
我在想的另一种方法是将 array 转换为 list ,删除重复的元素,然后将其传回。
这对我来说是一个问题:如何编写该代码?(我为什么要问它?)

public static char[] deleteRepeats(char[] array, int size)
{
    ArrayList<String> newarray = new ArrayList<String>();
    newarray = Arrays.asList(array);
}

它说类型不匹配,我该如何更正代码?

另一个问题是:回到最开始的问题,如何使用部分填充的数组来实现呢?

4

1 回答 1

1
ArrayList<String> newarray = new ArrayList<String>();

是泛型字符串的数组列表。但是,您的参数是char类型。因此它们不可互换。这就是引发Type Mismatch错误的原因。

你是对的,使用 aSet是实现它的最简单方法。但是我不知道练习是否要您手动完成工作。

但是,如果您不能使用包装器类Character并且必须使用该char类型,那么如果您要为Set您完成替换工作,则必须进行手动转换。

编辑:

您不能使用Arrays.asList()方法来获取这样的列表。该方法将 java 对象作为参数而不是原始类型。当你传递char[]它看到的唯一对象是数组本身。

所以结果是List<char[]>因为泛型不支持原始类型。

于 2012-12-10T05:04:03.383 回答