Question: In defining a conversion operator, is there any advantage of defining

```
operator T() const;

```

over

```
operator T&();
operator const T&() const;

```

Assuming that I'm not concerned in potential performance gain in returning a value instead of a reference.

Answer: 
IMHO, you can have a mapper and a reducer.

Mapper:

1. class PostMapper extends Mapper < Object, Text, Text, Text>
2. map() can write a key which is the UserID (Text) and a value which is a Post(Text) to the Context.

Reducer:

1. class PostReducer extends Reducer < Text, Text, Text, Text >
2. reduce() can have an iterable loop with (i) a counter that counts
for every fetched Post and (ii) a Text variable can be used to
concatenate every fetched Post with suitable delimiter.
3. After completing the loop, the key / UserID and, the value / the  

concatenated Text can be written to reducer's context.

After the job ran successfully, the resulting file would contain the UserID and the concatenated posts, separated by a tab.

Note: Remove all tab characters in the posts before you concatenate. Prefix the count followed by a tab and append it with concatenated posts if you want the count also in the output.
Your key in the key/value pair would be the userId. The value would be a list of strings (the messages). Most lists have a count property. 

The information you are looking for would be accessed something like this:

var userId = 39;  

Get the first message of user 39: userMessages[userId][0].  

Get the number of message posted by user 39: userMessages[userId].Count()