package day081702;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Queue;
/**
* 统计一句话中各个字符的个数
*/
public class MapDemo01 {
public static void main(String[] args) {
String str = "good good study, day day up.";
Queue<Character> queue = toQueue(str);
Map<Character,Integer> map = new HashMap<Character,Integer>();
while(queue.size()>0){
Character c = queue.poll();
if(!map.containsKey(c)){
map.put(c, 1);
}else{
map.put(c, map.get(c)+1);
}
}
System.out.println(map);
}
/**
* 把一串字符串处理为只含有小写字母的Queue
* (其他无关字符过滤掉)
* @param str
* @return Queue<Character>
*/
public static Queue<Character> toQueue(String str){
List<Character> list26 = new ArrayList<Character>();
for(int i=0;i<26;i++){
Character c = (char)('a'+i);
list26.add(c);
}
Queue<Character> queue = new LinkedList<Character>();
for(int i=0;i<str.length();i++){
Character c = str.charAt(i);
if(list26.contains(c)){
queue.offer(c);
}
}
return queue;
}
}
package day081702;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Queue;
public class MapDemo02 {
public static void main(String[] args) {
String str = "good good study,day,day,up.";
List<Character> list = toList(str);
Map<Character,Integer> map = new HashMap<Character,Integer>();
long start = System.currentTimeMillis();
for(int i=list.size()-1;i>=0;i--){
Character c = list.get(i);
if(!map.containsKey(c)){
map.put(c, 1);
}else{
map.put(c, map.get(c)+1);
}
list.remove(i);
}
System.out.println(map);
long end = System.currentTimeMillis();
System.out.println(end-start);
}
/**
* 把一串字符串处理为只含有小写字母的List
* (其他无关字符过滤掉)
* @param str
* @return List<Character>
*/
public static List<Character> toList(String str){
List<Character> list26 = new ArrayList<Character>();
for(int i=0;i<26;i++){
Character c = (char)('a'+i);
list26.add(c);
}
List<Character> list = new ArrayList<Character>();
for(int i=0;i<str.length();i++){
Character c = str.charAt(i);
if(list26.contains(c)){
list.add(c);
}
}
return list;
}
}
package day081702;
import java.util.Arrays;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Queue;
import java.util.Set;
/**
* 统计一句话中重复单词的个数
*/
public class MapDemo03 {
public static void main(String[] args) {
String str = "good good study, day day up.";
Queue<String> queue = toQueue(str);
Map<String,Integer> map = new LinkedHashMap<String,Integer>();
while(queue.size()>0){
String key = queue.poll();
if(!map.containsKey(key)){
map.put(key, 1);
}else{
map.put(key, map.get(key)+1);
}
}
Set<String> keySet = map.keySet();
for(String setWord:keySet){
String word = setWord;
System.out.println(word+"的重复次数:"+map.get(word));
}
Iterator<String> it = keySet.iterator();
while(it.hasNext()){
String word = it.next();
System.out.println(word+"的重复次数:"+map.get(word));
}
Set<Entry<String,Integer>> entrySet = map.entrySet();
for(Entry<String,Integer> entry: entrySet){
String word = entry.getKey();
Integer num = entry.getValue();
System.out.println(word+"重复次数:"+num);
}
Iterator<Entry<String,Integer>> entryIt = entrySet.iterator();
while(entryIt.hasNext()){
Entry<String,Integer> tmpEntry = entryIt.next();
String word = tmpEntry.getKey();
Integer num = tmpEntry.getValue();
System.out.println(word+"重复次数:::"+num);
}
}
/**
* 把String转为只包含单词的数组(过滤掉空格和标点符号)
* @param str
* @return Queue<String>
*/
public static Queue<String> toQueue(String str){
String regex = "\\,|\\.";
str = str.replaceAll(regex, " ");
System.out.println(str);
String regex2 = "\\ +";
str = str.replaceAll(regex2, " ");
System.out.println(str);
String[] words = str.split(" ");
System.out.println(Arrays.toString(words));
Queue<String> queue = new LinkedList<String>();
for(String word : words){
queue.offer(word);
}
return queue;
}
}