You can do this with a stateless transformation function if you start from the indices instead of the list elements. Here's an example with Java 8 streams:
List<String> list = Arrays.asList("a", "b", "c");
IntStream.range(0, list.size())
.mapToObj(i -> i + list.get(i))
.forEachOrdered(System.out::println); //or .collect(Collectors.toList()), ...
You can do the same with FluentIterable with a suitable index generator, such as ContiguousSet.create(Range.closedOpen(0, list.size()), DiscreteDomain.integers())
.