学校图书馆共有 300 万册图书,想统计其中 Computer , Science ,计算机,科学这几个词出现的次数,并按照自然年度分类,如 2016 年出版的书籍中这几个词各自出现的次数,
2015 年······依次类推。
题目来源 链接:https://www.nowcoder.com/questionTerminal/0b09751acbb64f9d8c63706052748cd4
来源:牛客网
以下是自己根据多层结构构造统计方法,如果有不对,欢迎留言
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
class book{
String contents;
int byear;
public String getContents() {
return contents;
}
public void setContents(String contents) {
this.contents = contents;
}
public int getByear() {
return byear;
}
public void setByear(int byear) {
this.byear = byear;
}
}
class yearCount {
List<countNum> numSet = new ArrayList<countNum>();
int byear;
public List<countNum> getNumSet() {
return numSet;
}
public void setNumSet(List<countNum> numSet) {
this.numSet = numSet;
}
public int getByear() {
return byear;
}
public void setByear(int byear) {
this.byear = byear;
}
}
class countNum {
String name;
int num;
public countNum() {
}
public countNum(String name, int num) {
super();
this.name = name;
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
}
public class Test {
List<yearCount> counts = new ArrayList<yearCount>();
Map<Integer, Integer> years = new HashMap<Integer, Integer>();
Map<String, Integer> names = new HashMap<String, Integer>();
public void count(String str, int byear,int nums) {
if (years.get(byear) == null) {
yearCount ycount = new yearCount();
ycount.setByear(byear);
years.put(byear, (counts.size() - 1));
ycount.getNumSet().add(new countNum(str, nums));
names.put(str + byear, (ycount.getNumSet().size() - 1));
} else if (names.get((str + "" + byear)) == null) {
int y = names.get(byear);
counts.get(y).getNumSet().add(new countNum(str, nums));
names.put(str + byear, (counts.get(y).getNumSet().size() - 1));
} else {
int i = names.get((str + "" + byear));
int y = names.get(byear);
int num = counts.get(y).getNumSet().get(i).num;
counts.get(y).getNumSet().get(i).setNum((nums+num));
}
}
public void add(String str,int byear,String index){
String[] s= str.split(index);
count(str,byear, (s.length-1));
}
public void main(book v) {
add(v.contents,v.byear,"科学");
add(v.contents,v.byear,"Computer");
add(v.contents,v.byear,"Science");
add(v.contents,v.byear,"计算机");
}
}