You already got a good technical answer, so let's add a distinct non-answer.
This here: List<Object[2]>
feels sooooo wrong.
Why don't you use something like: List<Pair<Integer, String>>
?!
In other words: do not give up on type information lightly. Do not misuse Object[]
as a typeless container to stuff in already typed things. Java is a statically compiled language. Meaning: don't resist the forces of generics and strict typing, instead flow with them.
And the answer code turns into:
.reduce(p1, p2 -> new Pair<>(p1.first * p2.first, p1.second + p2.second))
Seriously: it starts by using Object[]
... and it ends with you switching to ruby 'cause dynamic typing!