这一章好起来了(可能因为马上Midterm了老师讲少了一点)
Java Libraries
回忆一下目前我们学了什么。
- Java基础入门
- 引用与迭代
- 建立IntList
- 建立SLList
- 建立AList
- 建立DequeList
- Testing
- Interface Inheritance and Implement Inheritance
实际上,建立这些List只是为了让我们了解原理,java的libraries里就已经包含这些类。如何正确运用库中的内容也是学习一种编程语言很重要的一方面。
Abstract data type和以前提到的interface基本一致,也是提供一个接口。下面举个栗子
首先,建立一个getWords方法
public static List<String> getWords(String inputFilename) {
List<String> words = new ArrayList<String>();
In in = new In(inputFilename);
while (!in.isEmpty()) {
String nextWord = cleanString(in.readString());
words.add(nextWord);
}
return words;
}
很简单。其中的cleanString是一个格式规范方法,功能是全变小写,删除除了字母之外的字符:
private static String cleanString(String s) {
return s.toLowerCase().replaceAll("[^a-z]", "");
}
然后,统计不同的单词数量,用到了Set类型:
public static int countUniqueWords(List<String> words) {
Set<String> wordSet = new HashSet<String>();
for (String ithWord: words) { //Advanced for
wordSet.add(ithWord);
}
//Set<String> wordSet = new HashSet<>(words); 也可
return wordSet.size();
最后,统计特定单词的数量,用到了Map类型,相当于Python中的字典:
public static Map<String, Integer> collectWordCount(List<String> words, List<String> target) {
/** Java's dictionary initiated */
Map<String, Integer> counts = new HashMap<>();
for (String t: target) {
counts.put(t, 0);
}
for (String s: words) {
if (counts.containsKey(s)) {
int oldCount = counts.get(s);
counts.put(s, oldCount + 1);
}
}
return counts;
}
和Python字典初始化对比,发现略繁琐。当然java也有它的好处,Map类型多种多样,HashMap TreeMap等等,容纳的数据类型也可选择。
Java中的各种数据类都继承自一个叫Collection的interface,再下层还有更多的分支。有了这些继承关系,我们可以实现Inheritance系列lecture里所讲的这些优势。
据说用java开发项目更efficient,目前还没感觉,因为还没搞过。。。
Interfaces and Abstract Classes
interface中的方法默认都是public的。
可以包括public的static变量,很好理解。说明这个变量在各个继承类中都起作用。
interface不能初始化,可以有abstract methods也可以用default关键字定义implement methods,不能有instance varibles。
abstract class同样也不能初始化,但是implement方法不用关键字,而abstract方法需要abstract关键字。可以有任意类型的变量。
答案是2.DeluxeModel继承自PaperShredder,只override了shredAll方法,并且还有一个abstract方法connectToWifi,所以DCX9000需要override shred和connectToWifi方法。
Packages
打包
导入package
转载:https://blog.csdn.net/fourier_transformer/article/details/105195505