如何用重复的变量填充数组?

时间:2019-01-23 14:44:45

标签: java

我正在寻找一种用vararg的内容填充特定大小的数组的算法,重复vararg的最后一个元素,直到数组已满。

public static <T> T[] fillWithRepeat(int length, T... elements) {
    // make array of length "length" and fill with contents of "elements"
}

有人知道这个好的算法吗?

2 个答案:

答案 0 :(得分:4)

由于问题不包括解决问题本身的任何尝试,因此我承担作业,因此答案仅是伪代码:

  • 创建一个长度为length的新数组结果
  • index从0迭代到length
  • 建立从0到index2的{​​{1}}变量
  • 分配elements.length
  • 增加index2或使其达到ressult[index] = elements[index2]时,将其保持在该值

有关创建“通用”数组的信息,请参见here

当然,Hulk用户(再次)是正确的,有实用程序方法elements.length-1,对于较新的Java Arrays.fill(),您应该考虑使用。

答案 1 :(得分:1)

这是算法。当您需要实例化类型为T

的数组时,它也可以解决通用实例化问题。
public static <T> T[] fillWithRepeat(int length, T... elements) {

    List<T> output = new ArrayList<>(Arrays.asList(elements));
    for(int i = 0; i < length - elements.length; i++){
        output.add(elements[elements.length - 1]);
    }

    return output.toArray(elements);
}