【问题标题】:Partially filled array, deleting duplicate array部分填充数组,删除重复数组
【发布时间】:2012-12-10 13:04:03
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • newarray = Arrays.asList(array); 你想在这里做什么?
  • @Nikolay Kuznetsov 我正在尝试将 char 列表转换为 arraylist,然后我可以删除重复的元素。
  • 你之前定义过newarray吗?
  • @NikolayKuznetsov 你在这里是什么意思?

标签: java arrays arraylist


【解决方案1】:
ArrayList<String> newarray = new ArrayList<String>();

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

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

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

编辑:

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

所以结果是List&lt;char[]&gt;,因为泛型不支持原始类型。

【讨论】:

  • 谢谢,将方法签名改为deleteRepeats(Character[] array, int size)后,问题解决
  • 好的。但是您应该考虑以手动方式进行,因为我认为这就是练习的目的……
猜你喜欢
  • 2021-12-16
  • 2020-02-26
  • 1970-01-01
  • 2013-09-15
  • 2021-05-23
  • 2013-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多