`

ThinkingInJava持有对象(Containers in Depth)读后总结

阅读更多

 

1.List的操作

Collections.nCopies(4, new StringAddress("Hello")));//复制4份
Collections.fill(list, new StringAddress("World!"));//替换容器中所有对象
 

2.Collection

// Make an array from the List:
Object[] array = c.toArray();
// Make a String array from the List:
String[] str = c.toArray(new String[0]);

 

3.享元(Flyweight design)

Countries.java

 

4.可选操作Optional Operation

 

Arrays.asList() 返回固定尺寸的List

Collections.unmodifiableList() 产生不可修改的列表

List<String> list = Arrays.asList("A B C D E F G H I J K L".split(" "));
test("Modifiable Copy", new ArrayList<String>(list));
test("Arrays.asList()", list);
test("unmodifiableList()",Collections.unmodifiableList(new ArrayList<String>(list)));

 

5.单向链表(简单实现)

Ex 模拟单向链表的增删(待编辑)

 

6.Implement Comparable

@Override
public int compareTo(Ex11 o) {
      int res = this.count - o.count;
      return res < 0 ? -1 : (res == 0 ? 0 : 1);
}
  

 

7. Deque

双向队列

 

 

 

8. java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap实际上是一个链表散列的数据结构,即数组和链表的结合体。

 

 

 

9.java.util.Properties extends Hashtable<Object,Object>

 

 

10.SortedMap(TreeMap唯一实现)

Comparator comparator()

firstKey()

SortedMap  subMap(K fromKey, K toKey)  //唯一可以取子集的Map

 

11.访问顺序排序

Map linkedMap = new LinkedHashMap<Integer, String>(16, 0.75f, true);

 

 

12. HashMap put HashSet add

由于 HashSet add() 方法添加集合元素时实际上转变为调用 HashMap put() 方法来添加 key-value 对,当新放入 HashMap Entry key 与集合中原有 Entry key 相同(hashCode() 返回值相等,通过 equals 比较也返回 true),新添加的 Entry value 将覆盖原来 Entry value,但 key 不会有任何改变,因此如果向 HashSet 中添加一个已经存在的元素,新添加的集合元素(底层由 HashMap key 保存)不会覆盖已有的集合元素。

 

 

13.

HashCode作用

Equals作用

 

String的比较

 

 

14.对每个容器对象,底层数据分析(比如:LinkedList链表)

ArrayList

HashMap

HashSet

 

15.容器测试效率

对于List选择

    ArrayList作为默认首选,如果需要经常表中间插入和删除,才去选择LinkedList

    如果使用固定数量的元素,可以选择背后有数组支撑的ListArrays.asList()产生的列表),也可选择真正的数组

对于set的选择

    HashSet性能上总是比TreeSet

    对于插入操作,LinkedHashSetHashSet的代价更高

 

16.Collections方法

 

17. Fail fast机制(快速报错)

 

final Entry<K,V> nextEntry() {     
    if (modCount != expectedModCount)     
        throw new ConcurrentModificationException(); 
 

 

 

由所有HashMap类的“collection 视图方法所返回的迭代器都是快速失败的:在迭代器创建之后,如果从结构上对映射进行修改,除非通过迭代器本身的 remove 方法,其他任何时间任何方式的修改,迭代器都将抛出 ConcurrentModificationException

 

 

18. Holding references

 

 

 

分享到:
评论

相关推荐

    ThinkingInJava

    ThinkingInJava

    ThinkinginJava

    ThinkinginJava cn.chm

    thinkinginjava

    讲解java的图书

    thinkinginjava帮助文档

    thinkingin,java,thinkinginjava,帮助文档 thinkingin,java,thinkinginjava,帮助文档 thinkingin,java,thinkinginjava,帮助文档 thinkingin,java,thinkinginjava,帮助文档 thinkingin,java,...

    thinking-in-java_java_in_ThinkinginJava_

    《Thinking in Java》是Bruce Eckel的经典之作,它深度探讨了Java编程语言的各个方面,是许多Java程序员必备的参考书籍。这本书以其详尽的解释、丰富的示例和深入的理论见解,深受全球开发者喜爱。"java in Thinking...

    ThinkingInJava-3rd-code.rar

    《Thinking in Java》是Bruce Eckel的经典著作,它深入浅出地介绍了Java编程语言的核心概念和技术。这本书的第三版(3rd edition)配套代码库"ThinkingInJava-3rd-edition-code"为读者提供了丰富的实践示例,帮助...

    《thinking in java》第三版完整PDF书籍+习题答案(中文版)

    《Thinking in Java》是Bruce Eckel的经典之作,被誉为学习Java编程的权威指南。该书以其深入浅出的方式,详尽地介绍了Java语言的核心概念和技术。第三版是此书的一个重要里程碑,它涵盖了Java语言的诸多关键特性,...

    ThinkingInJava3.rar

    《Thinking in Java》不仅涵盖了基础语法,如变量、控制结构、类和对象,还深入探讨了高级主题,如多线程、网络编程、集合框架以及反射机制。 在书中,Eckel先生通过丰富的示例和解释,帮助读者理解面向对象编程的...

    study_ThinkinginJava_

    根据提供的信息,“study_ThinkinginJava_”压缩包文件包含了你在阅读这本书时所做的课后练习题和笔记,这将是一个宝贵的自我学习和复习资源。 在《Thinking in Java》中,你可以找到以下关键知识点: 1. **基础...

    ThinkingInJava_java_

    《Thinking in Java》是Java编程领域的一本经典著作,由Bruce Eckel撰写,深受程序员喜爱。这本书全面深入地讲解了Java语言,不仅适合初学者入门,也适合有经验的开发者进一步提升技能。在这个压缩包中,包含的是与...

    ThinkingInJava3th.pdf

    ThinkingInJava 第三版 中文

    thinkinginjava 中文

    thinkinginjava 中文 4th edition pdf

    thinkinginjava笔记.pdf

    《Thinking in Java》是Java编程领域的一本经典著作,它深入浅出地讲解了Java语言的核心概念和技术。以下是对笔记中部分关键知识点的详细解析: 1. **类与对象**: - 类是对象的蓝图,它定义了对象的数据属性...

    ThinkingInJava源码+练习题答案.zip

    《Thinking in Java》是Bruce Eckel的经典编程教材,它深入浅出地介绍了Java语言的核心概念和技术。这份资源包含了书中的源代码以及练习题的答案,对于学习和深入理解Java编程非常有帮助。 首先,TIJ4-code.rar这个...

    ThinkingInJava3中文版

    《Thinking in Java》是 Bruce Eckel 的经典编程著作,它深入浅出地介绍了Java语言的各个方面,被广大程序员视为学习Java的权威指南。这个中文版包含第1至14章的内容,其中1-11章以PDF格式呈现,12-14章则以CHM...

Global site tag (gtag.js) - Google Analytics