Stack Overflow Asked by vzdiegocm on January 5, 2022
I have the following class:
class Node<T extends Comparable<T>> {
and this is the constructor am using:
Node(T data, int h) {
this.tower = new ArrayList<Node<T>>(Collections.nCopies(h, data));
this.data = data;
}
Why is it giving me the following error:
The constructor ArrayList<Node<T>>(Collections.nCopies(h, data)) is undefined
Collections.nCopies is probably not what you want, as it will not actually create copies of the object itself, but only of the reference to it. Which means, changing the value of one of these nodes changes all, which is likely not what you want. If it isn't, then here's your solution:
Node(T data, int h) {
this.tower =
IntStream.range(0, h) // these two lines do
.mapToObj((ignore)->data) // what Collections.nCopies does
.map(Node::new) // but here we're creating unique objects
.collect(Collectors.toList());
this.data = data;
}
This way, each node is a separate object, but they all have the same initial value.
Answered by Sean Patrick Floyd on January 5, 2022
You are building an ArrayList
that is meant to contain Node<T>
but you are supplying to the constructor a List<T>
(and not List<Node<T>>
), you probably want
Node(T data, int h) {
this.tower = new ArrayList<Node<T>>(Collections.nCopies(h, new Node<T>(data)));
this.data = data;
}
Answered by Alberto Sinigaglia on January 5, 2022
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP