import java.util.*;
/**
* 练习26:拿到练习25中所产生的Map,并按照它们在最初的文件中出现的顺序重新创建单词顺序。
*/
public class Exercise26 {
public static void main(String[] args) {
Map<String, ArrayList<Integer>> map = new HashMap<String, ArrayList<Integer>>();
List<String> words = new ArrayList<String>();
words.addAll(new TextFile("UniqueWords.java", "\\W+"));
System.out.println(words);
ArrayList<Integer> arrayList = new ArrayList<Integer>();
for (int i = 0; i < words.size(); i++) {
String word = words.get(i);
if (map.get(word) == null) {
arrayList = new ArrayList<Integer>();
arrayList.add(i);
} else {
arrayList = map.get(word);
arrayList.add(i);
}
map.put(word, arrayList);
}
System.out.println(map);
Map<Integer, String> linkedHashMap = new LinkedHashMap<>();
Set<String> keySet = map.keySet();
Iterator<String> it = keySet.iterator();
while (it.hasNext()) {
String key = it.next();
ArrayList<Integer> keyIndexList = map.get(key);
for (Integer index : keyIndexList) {
linkedHashMap.put(index, key);
}
}
List<Integer> newKeyList = new ArrayList<>(linkedHashMap.keySet());
Collections.sort(newKeyList);
for (int newKey : newKeyList) {
System.out.print(linkedHashMap.get(newKey) + " ");
}
}
}
/* OutPut:
[package, com, example, demo, elevensection, import, java, util, Set, import, java, util, TreeSet, public, class, UniqueWords, public, static, void, main, String, args, Set, String, words, new, TreeSet, String, String, CASE_INSENSITIVE_ORDER, words, addAll, new, TextFile, Users, liran, Project, demo, src, main, java, com, example, demo, elevensection, SetOperations, java, W, System, out, println, words]
{com=[1, 41], CASE_INSENSITIVE_ORDER=[29], Set=[8, 22], import=[5, 9], main=[19, 39], SetOperations=[45], String=[20, 23, 27, 28], Users=[34], demo=[3, 37, 43], System=[48], example=[2, 42], out=[49], println=[50], java=[6, 10, 40, 46], public=[13, 16], TreeSet=[12, 26], W=[47], class=[14], new=[25, 32], liran=[35], package=[0], static=[17], void=[18], src=[38], words=[24, 30, 51], TextFile=[33], elevensection=[4, 44], args=[21], Project=[36], util=[7, 11], addAll=[31], UniqueWords=[15]}
package com example demo elevensection import java util Set import java util TreeSet public class UniqueWords public static void main String args Set String words new TreeSet String String CASE_INSENSITIVE_ORDER words addAll new TextFile Users liran Project demo src main java com example demo elevensection SetOperations java W System out println words
*///:~