我正在使用Absolute Java进行一次练习 问题是:编写一个静态方法,该方法将部分填充的字符数组作为形式参数,并删除数组中所有重复的字母。该方法应该有两个形式参数:一个数组参数和一个int类型的形式参数,它给出了使用的数组位置数。删除该字母后,其余字母移动一个位置以填补空白。
我认为使用hashset,它应该是最简单的方法 我想的另一种方法是将数组转换为列表,删除重复元素然后将其传回 这对我来说是一个问题:如何编写该代码? (为什么我要问它?)
public static char[] deleteRepeats(char[] array, int size)
{
ArrayList<String> newarray = new ArrayList<String>();
newarray = Arrays.asList(array);
}
它说类型不匹配,我该如何更正代码?
另一个问题是:回到最初的问题,如何使用部分填充的数组来实现它?
答案 0 :(得分:1)
ArrayList<String> newarray = new ArrayList<String>();
是Generic type String的数组列表。但是,您的参数为char
类型。因此它们不可互换。那是什么引发Type Mismatch
错误。
你是正确使用Set
是实现它的最简单方法。但是我不知道练习是否要你手动完成这项工作。
但是,如果您不能使用包装器类Character
并且必须使用char
类型,那么如果要获得Set
进行替换工作,则必须进行手动转换对你而言。
编辑:
您无法使用Arrays.asList()
方法获取此类列表。该方法将java对象作为参数而不是基本类型。当你传递char[]
时,它看到的唯一对象就是数组本身。
因此,结果是List<char[]>
,因为泛型不支持基本类型。