我正在寻找一种用vararg的内容填充特定大小的数组的算法,重复vararg的最后一个元素,直到数组已满。
public static <T> T[] fillWithRepeat(int length, T... elements) {
// make array of length "length" and fill with contents of "elements"
}
有人知道这个好的算法吗?
答案 0 :(得分:4)
由于问题不包括解决问题本身的任何尝试,因此我承担作业,因此答案仅是伪代码:
length
的新数组结果 index
从0迭代到length
index2
的{{1}}变量elements.length
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);
}