public class ApplesAndOrangesWithGenerics {
public static void main(String[] args) {
ArrayList<Apple> apples = new ArrayList<Apple>();
for(int i = 0; i < 3; i++)
apples.add(new Apple());
// Compile-time error:
// apples.add(new Orange());
for(int i = 0; i < apples.size(); i++)
System.out.println(apples.get(i).id());//在get时候替你执行转型
// Using foreach:
for(Apple c : apples)
System.out.println(c.id());
}
}
11.3 添加一组元素:
Collections下的addAll()方法接受一个Collection对象,以及一个数组或是一个逗号分割的列表,将元素添加到Collection对象中 例如:
Collection<Integer> collection =
new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4, 5));
Integer[] moreInts = { 6, 7, 8, 9, 10 };
collection.addAll(Arrays.asList(moreInts));// list对象
Collections.addAll(collection, 11, 12, 13, 14, 15)//逗号风格的列表
Collections.addAll(collection, moreInts);//数组
List<Integer> list = Arrays.asList(16, 17, 18, 19, 20);//asList方法返回的是List 但底层表示是数组 不能调整尺寸
list.set(1, 99); // OK -- modify an element
// list.add(21); // Runtime error because 底层表示是数组 不能调整尺寸
class Snow {}
class Powder extends Snow {}
class Light extends Powder {}
class Heavy extends Powder {}
class Crusty extends Snow {}
class Slush extends Snow {}
public class AsListInference {
public static void main(String[] args) {
List<Snow> snow1 = Arrays.asList(
new Crusty(), new Slush(), new Powder());
// List<Snow> snow2 = Arrays.asList(
// new Light(), new Heavy());Arrays.asList中只有Powder类型的,因此它会创建List<Powder>而不是List<Snow> 所有本句编译通不过
HashSet 最快的获取元素的方式
TreeSet 比较结果的升序排列
LinkedHashSet 添加的顺序保存对象
HashMap 无序,最快的查找速度
TreeMap 键升序保存
LinkedHashMap 添加的顺序保存对键 并保留了HashMap的查询速度
chapter 9 interfaces 接口
接口和内部类为我们提供了将接口和实现分开的方法(编程原则 :面向接口编程)我的理解是:你们公司做了一个项目,项目中你写了一个公共类XxxServer 供的各个模块使用, 每次使用的时候都需要new XxxServer ();XxxServer 散落在各个模块的代码中。这个项目很成功准备全国推广,但使用你项目的客户需求有多种,其中XxxServer需要修改。你可能就想 改XxxServer就ok了啊。是的 可以。但这“多种需求”共有10多个 这样你的XxxServer需要改10多个版本,每次给客户部署的时候你就需要把 XxxServer替换成客户需要的而且不同版本的XxxServer名字必须一样 ,因为别的模块的代码都是这样new XxxServer()使用XxxServer的。
好的方法是:使用把XxxServer声明为接口 ,定义工厂方法 getXxxServer()来得到XxxServer的具体实现,通过配置文件来决定getXxxServer()得到的是哪个具体XxxServer的实现类 这样你只需要修改配置文件就使得项目的具体功能可“配置”了
上面举的例子可能还不是“面向接口编程”好处的最好体现。大家可以看看集合框架中的设计List ArrayList LinkedList 实现。
下面是Collections.sort(list)方法 ,比较能体现接口编程的好处 ,想想看如果方法参数是具体的实现ArrayList 是什么样的情况
public static <T extends Comparable<? super T>> void sort(List<T> list) {
Object[] a = list.toArray();
Arrays.sort(a);
ListIterator<T> i = list.listIterator();
for (int j=0; j<a.length; j++) {
i.next();
i.set((T)a[j]);
}
}
分享到:
相关推荐
以上就是《Think in Java》第11章“持有对象”中的核心知识点,理解并掌握这些概念对于深入理解和使用Java对象是非常重要的。通过实践和编程练习,你可以更好地领悟这些知识,并应用到实际项目中。
Think in Java(美)Bruce Eckel 著 陈昊鹏 译 引言 同人类任何语言一样,Java为我们提供了一种表达思想的方式。如操作得当,同其他方式相 比,随着问题变得愈大和愈复杂,这种表达方式的方便性和灵活性会显露无遗。 ...
《Think in Java 中文文档》作为一本深入讲解Java编程语言的教材,不仅适合有志于深入学习Java的程序员,也适合那些希望拓展自己技术栈的初学者。本书通过系统性的结构和丰富的实例,帮助读者全面理解Java,并最终...
《Think in Java》是Bruce Eckel的经典编程教材,它深入浅出地讲解了Java语言的基础概念和高级特性。源码整理则为读者提供了实践和学习的机会,帮助理解书中的示例和理论。以下是对《Think in Java》源码中一些重要...
《Think in Java》是Java编程领域的一本经典著作,由Bruce Eckel撰写,深受程序员喜爱。这本书通过深入浅出的方式讲解了Java语言的核心概念和技术,包括面向对象编程、数据结构、算法以及网络编程等多个方面。"Think...
通过对《Think in Java 3》的学习,读者不仅可以掌握Java语言的基础知识,还能深入理解面向对象编程的思想,提升编程技能和解决问题的能力。这本书适合所有层次的Java开发者,无论你是初学者还是经验丰富的程序员,...
Think in java 源码构建编译
java think in java (英文第四版)至今为止 被认为是java教程之中权威作品之一
《Think in Java》是 Bruce Eckel 的经典著作,它深入浅出地讲解了Java编程语言的核心概念和技术。这本书强调理解编程思想,而不仅仅是学习语法。练习题是学习过程中的重要部分,它们帮助我们巩固理论知识,提升实际...
java 教程 think in java,java 教程 think in java
《Think In Java 4》是Java编程领域里一本极具影响力的著作,由资深程序员 Bruce Eckel 编著。这本书以其深入浅出的讲解方式和全面的知识覆盖而闻名,被誉为Java学习者的经典读物。中文版的完美高清版本为国内读者...
《Think in Java 中文第四版》是学习Java编程的经典之作,由Bruce Eckel撰写,它深入浅出地讲解了Java语言的核心概念和技术。本部分主要涵盖的是书籍的第二部分,通常涉及面向对象编程的深入探讨,包括类、对象、...
think in java 第四版 源码以及作业 eclipse版本 包含jar包 可以直接导入eclipse
《Think in Java》是Java编程领域的一本经典之作,由Bruce Eckel撰写,中文版第四版更是深受广大Java程序员喜爱。这本书深入浅出地讲解了Java语言的核心概念和编程技术,旨在帮助读者不仅仅是学习语法,而是理解Java...
Think Data Structures in Java 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
《Think in JAVA 编程思想》是Java编程领域的一本经典著作,由Bruce Eckel撰写。第四版作为该书的最新版本,包含了作者对Java语言深入的理解和丰富的编程经验,旨在帮助读者理解面向对象编程的核心理念,并提升编程...
在《Think in Java》中,读者可以系统地学习Java语言的基础知识,例如数据类型、运算符、控制流程以及面向对象编程的核心概念。随着书籍内容的深入,还会逐步接触到Java的高级主题,比如内部类、异常处理、集合框架...
《Think in Java》是Java编程领域的一本经典著作,由Bruce Eckel撰写,中文版的出现使得更多中国程序员能够深入理解和掌握Java编程语言的核心概念。这本书以其深入浅出的讲解方式,深受程序员们的喜爱,是许多初学者...
抽象的进步 1.2 对象的接口 1.3 实现方案的隐藏 1.4 方案的重复使用 1.5 继承:重新使用接口 1.5.1 改善基础类 1.5.2 等价和类似关系 1.6 多形对象的互换使用 1.6.1 动态绑定 ...1.11 Java和因特网
think in java think in java think in java think in java think in java think in java