I advice you to forget about 'data structure' and model it thinking about OO classes. Think about a Sentence class and what do you want to store about a sentence and how to store Sentences.
If you insist on using 'general' data structures you may use a List where every element represents a sentence with type Guava's Multimap.
The key would be Noun/Verb/Etc and the value would be the word. It allows several values per key. Reference here.
Guava example (not tested):
List<Multimap<String, String>> sentenceList = new ArrayList<>();
for (String line: lines) {
Multimap<String, String> aux = ArrayListMultimap.create();
PosToken=new StringTokenizer(SAPosTagging.tagedReview[line]);
while(PosToken.hasMoreTokens()) {
// TODO ...
strToken=PosToken.nextToken();
// TODO, lets assume it is a noun
aux.put("noun", strToken);
// TODO, etc.
}
sentenceList.add(aux);
}
OO example (not tested):
public class Sentence {
private List<String> nouns = new ArrayList<>;
private List<String> verbs = new ArrayList<>;
// TODO Adverbs, etc.
public List<String> getNons() { return nouns; };
// TODO Other getters, etc.
}
List<Sentence> sentenceList = new ArrayList<>();
for (String line: lines) {
Sentence aux = new Sentence();
PosToken=new StringTokenizer(SAPosTagging.tagedReview[line]);
while(PosToken.hasMoreTokens()) {
// TODO ...
strToken=PosToken.nextToken();
// TODO, lets assume it is a noun
aux.getNouns().add(strToken);
// TODO, etc.
}
sentenceList.add(aux);
}