方法1(通过TreeMap):
第一种通过TreeMap,代码如下:
package Test2;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class Demo1 {
//通过TreeMap自动排序
public static void main(String[] args) {
TreeMap<String, Integer> treeMap = new TreeMap<>();//创建TreeMap集合,以便通过其特性达到自动排序
String str="wo ai heima wo ai java wo yao hao hao xue xi java";
String[] split = str.split(" "); //通过调用字符串的split方法,让字符串通过空格进行分割,返回一个字符串数组
for (String s : split) { //遍历字符串数组
if (treeMap.containsKey(s)) { //判断TreeMap集合中是否有该字符
Integer value = treeMap.get(s); //通过key找出集合中的value
treeMap.put(s, value + 1); //将值的数据加1,然后添加到集合中去
} else {
treeMap.put(s,1); //此时集合中没有该Key,所以将该字符作为键加入到集合中
}
}
Set<Map.Entry<String, Integer>> entries = treeMap.entrySet(); //获取集合的键值对集合
for (Map.Entry<String, Integer> entry : entries) { //遍历该集合
String key = entry.getKey(); //获取键值对集合的键
Integer value = entry.getValue(); //获取键值对集合的值
System.out.print(key+"("+value+")"); //拼接打印
}
}
}
第二种(通过LinkedMap配合Stream流):
代码如下:
package Test2;
import java.util.LinkedHashMap;
import java.util.function.Consumer;
public class Demo1_1 {
public static void main(String[] args) {
LinkedHashMap<String, Integer> linkedHashMap = new LinkedHashMap<>();
String str="wo ai heima wo ai java wo yao hao hao xue xi java";
String[] split = str.split(" ");
for (String s : split) {
if (linkedHashMap.containsKey(s)) {
Integer value = linkedHashMap.get(s);
linkedHashMap.put(s, value+1);
} else {
linkedHashMap.put(s, 1);
}
}
linkedHashMap.keySet().stream().sorted().forEach(new Consumer<String>() {
@Override
public void accept(String s) {
System.out.print(s+"("+linkedHashMap.get(s)+")");
}
}); //通过流进行排序
// linkedHashMap.forEach((key,value)-> System.out.print(key+"("+value+")"));
}
}
第三种(通过HashMap配合Stream使用):
代码如下:
package Test2;
import java.util.HashMap;
import java.util.function.Consumer;
public class Demo1_2 {
public static void main(String[] args) {
HashMap<String, Integer> hashMap = new HashMap<>();
String str="wo ai heima wo ai java wo yao hao hao xue xi java";
String[] s = str.split(" ");
for (String s1 : s) {
if (hashMap.containsKey(s1)) {
Integer value = hashMap.get(s1);
hashMap.put(s1, value + 1);
} else {
hashMap.put(s1, 1);
}
}
hashMap.keySet().stream().sorted().forEach(new Consumer<String>() {
@Override
public void accept(String s) {
System.out.print(s + "(" + hashMap.get(s) + ")");
}
});
}
}