Question: Im given a task which i am a little confused to understand. Here is the question statement:

---

The following program should read a file and store all its tokens in a member variable.
Your task is to write a single method that returns the number of items in tokenMap, the average length (as double value) of the elements in tokenMap, and the number of tokens starting with character "a".

---

Here the tokenMap is an object of type `HashMap<String, Integer>`;

I do have some idea about HashMap but what i want to know the "key value" for HashMap required is a single character or the whole word?? that i should store in tokenMap.

Also how can i compute the average length?

Answer: 
Looks like you have to use the entire word as the key.

The average length of tokens can be computed by summing the lengths of each token and dividing by the number of tokens.

In Java, you can find the number of tokens in the HashMap by tokenMap.size().

You can write loops that visit each member of the map like this:

```
  for(String t: tokenMap.values()){
     //t is a token
  }

```

and if you look up String in the Java API docs you will see that it is easy to find the length of a String.
> 
> should i split it based upon words or
>  based upon each character
> 
> 
> 

The requirement is to make tokens, so you should split them based on words. Each word becomes a unique String key. It would make sense for the value to be the count of each token.

If the file you are reading has these three lines:

```
int alpha;
int beta;
float delta;

```

Then you should have something like 

```
<"int", 2>
<";", 3>
<"alpha", 1>
<"beta", 1>
<"float", 1>
<"delta", 1>

```

(The semicolon may or may not be considered a token.) 
Your average length would be ( 3x2 + 3x1 + 5 + 4 + 5 + 5) / 6.
Your length of tokens starting with "a" would be 5.0.

Look elsewhere on this forum for keySet and you should be good to go.