学校图书馆共有 300 万册图书,想统计其中 Computer , Science ,计算机,科学这几个词出现的次数,并按照自然年度分类,如 2016 年出版的书籍中这几个词各自出现的

来源:互联网 发布:linux计划任务每分钟 编辑:程序博客网 时间:2024/05/17 09:06

学校图书馆共有 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,"计算机");    }}
阅读全文
0 0
原创粉丝点击