`
java-mans
  • 浏览: 11430086 次
文章分类
社区版块
存档分类
最新评论

【实现模式】Collections for java

 
阅读更多

这几天学习了一下Kent Beck的《实现模式(Implementation Patterns)》,可能是由于刚读完《Design Patterns》的原因,觉得作者的语言使用太过于随意话,《design patterns》的逻辑性更胜一筹。

所谓的实现模式,也不乏一些编程技巧,从设计模式的角度来看,只不过是一些trick而已。

而且书中好多地方比较牵强。可能由于我不是java程序员的缘故,书中好多内容不能理解,但是还是坚持看了下来。

细读了collections一章并做如下笔记。


1 Collections hover in a strange world halfway between a programming language construct and a library.

其实从C到C++发展中可以看出,C中的collection都是需要通过construct才可得到,C++中的STL已经成了first-class language element.


2 metaphors.

  • The first is that of a multi-valued variable.
  • The second metaphor mixed into collections is that of objects --- a collection is an object.
  • A third metaphor useful for thinking about collections is that of mathematical sets.

3 Issues

  • The first concept expressed by collections is their size.
  • A second concept expressed through collections is whether or not the order of elements is important.
  • Another issue to be expressed by collections is the uniqueness of elements.


4 Interfaces

android好像多了一个SparseArray,等价于Map<Integer, Object>,Performance的区别。

  • Array
  • Iterable
  • Collection
  • List
  • Set
  • SortedSet
  • Map

5 Implementations

As with all performance issues, it is best to pick a simple implementation to begin with and then tune based on experience. If you see a profile dominated by calls to add() or remove(), consider switching an ArrayList to a LinkedList.


6 Collections

  • Searching
  • Call Collections.binarySearch(list, element) to return the index of an element in the list
  • Sorting
  • Shuffle(list), Reverse(list), Sort(list), sort(list, comparator)
  • Unlike binary search, sorting performance is roughly the same for ArrayList and LinkedList, because the elements are first copied into an array, the array is sorted, and then the elements are copied back.
  • Unmodifiable Collections
  • Collections.unmodifiableCollection()
  • Single-Element Collections
  • Collections.singleton()

7 Extending Collections

Adapter


Java内的Collection功能还是比较强大的,可以在不同场合使用不同的Collection。

这也是我在android代码没有意识到的问题,基本上都是使用ArrayList,虽然数据量比较少。

所以说性能问题的改善,还是需要具备较深的语言功底,而在java方面,也正是我所缺少的。

分享到:
评论

相关推荐

    Java基础知识点总结.docx

    Collections--集合工具类 83 Arrays—数组对象工具类 84 增强for循环 85 可变参数(...) 86 枚举:关键字 enum 86 自动拆装箱 86 泛型 87 &lt;java.lang&gt;System 89 &lt;java.lang&gt;Runtime 90 &lt;java.lang&gt;Math 90 &lt;java....

    AIC的Java课程1-6章

    第12章 IO与串行化 2课时  了解Java IO 中类的层次结构,介绍Java IO采用的装饰器模式。  学会使用File,FileReader,BufferedReader,FileWriter,BufferedWriter,PrintWriter等类输入...

    廖雪峰 Java 教程.doc

    for循环 break和continue 数组操作 遍历数组 数组排序 多维数组 命令行参数 面向对象编程 面向对象基础 方法 构造方法 方法重载 继承 多态 抽象类 接口 静态字段和静态方法 包 作用域 classpath...

    Java 基础核心总结 +经典算法大全.rar

    Collections 类集合实现类特征图 泛形 泛型的使用 用泛型表示类 用泛型表示接口泛型方法 泛型通配符 反射 Class 类Field 类Method 类ClassLoader 类 枚举 枚举特性 枚举和普通类-样枚举神秘之处 枚举类 I/O File...

    java基础案例与开发详解案例源码全

    5.3.2 Java抽象思想的实现122 5.4 封装124 5.4.1 对象封装的概念理解124 5.4.2 类的理解125 5.4.3 Java类模板创建125 5.4.4 Java中对象的创建和使用127 5.5 属性130 5.5.1 属性的定义130 5.5.2 变量131 5.6 方法132 ...

    JAVA基础课程讲义

    JAVA中如何实现多线程(重点!!) 168 通过继承Thread类实现多线程 168 通过Runnable接口实现多线程 169 线程状态和sleep/yield/join/stop/destroy方法 170 新生状态 170 就绪状态 170 运行状态 170 死亡状态 170 ...

    Java 基础面试题

    13. Collections提供的工具方法 14. String、StringBuffer和StringBuilder区别 15. Map的键和值可以为null吗,为什么 16. 集合排序,内排序,外排序 17. 动态代理和静态代理 18. 封装、继承、多态 19. static...

    java常用工具类的使用

    在Java程序设计过程中,对应日期和时间的格式化,还有一个简单的格式化方式,就是java.text.SimpleDateFormat,该类中用字符串指定日期和时间的格式,字符串中的字符称为模式字符,模式字符区分大小写。常见的模式...

    百度地图开发java源码-github-collections:github-collections

    百度地图开发java源码 ...java设计模式 - Design patterns implemented in Java 人工智能 An Open Source Machine Learning Framework for Everyone Play with neural networks! Android Google Flutter

    java面试题目与技巧1

    │ │ Sun Certified Programmer for Java 2 Platform 1.4 (CX-310-035)考试提纲.txt │ │ ucertify_prepkit_features.pdf │ │ vmspec.2nded.html.zip │ │ 一些其它网站的java基础精华贴.txt │ │ 新建 文本...

    java面试题及技巧4

    │ │ Sun Certified Programmer for Java 2 Platform 1.4 (CX-310-035)考试提纲.txt │ │ ucertify_prepkit_features.pdf │ │ vmspec.2nded.html.zip │ │ 一些其它网站的java基础精华贴.txt │ │ 新建 文本...

    java 面试题 总结

    但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...

    java面试宝典

    76、什么是java序列化,如何实现java序列化? 18 77、简述synchronized和java.util.concurrent.locks.Lock的异同 ? 18 78、abstract class Name { private String name; public abstract boolean isStupidName...

    java面试题以及技巧

    │ │ Sun Certified Programmer for Java 2 Platform 1.4 (CX-310-035)考试提纲.txt │ │ ucertify_prepkit_features.pdf │ │ vmspec.2nded.html.zip │ │ 一些其它网站的java基础精华贴.txt │ │ 新建 文本...

    Java面试宝典-经典

    5、说明生活中遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序: 71 7、写一个Singleton出来。 75 8、递归算法题1 77 9、递归...

    Java面试宝典2010版

    5、说明生活中遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序: 71 7、写一个Singleton出来。 75 8、递归算法题1 77 9、递归...

    java面试题大全(2012版)

    5、说明生活中遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序: 71 7、写一个Singleton出来。 75 8、递归算法题1 77 9、递归...

    java7hashmap源码-for-java:java学习笔记

    java7 hashmap源码 Java学习笔记 Effective Java Topic2:插件销毁对象 2. 多参数情况 使用重叠构造器; 使用Build模式【构建器】: new A.Build().set.set.build(); Build模式也适用于类层次结构 递归类型参数 /* *...

    java范例开发大全源代码

    第1篇 Java编程基础  第1章 Java开发环境的搭建(教学视频:9分钟) 2  1.1 理解Java 2  1.2 搭建Java所需环境 3  1.2.1 下载JDK 3  1.2.2 安装JDK 4  1.2.3 配置环境 5  1.2.4 测试JDK配置...

    java范例开发大全

    实例218 使用Collections类对List的排序操作 393 实例219 LinkedList的添加删除操作 395 实例220 运用Vector 397 实例221 改变Properties文件中的键值 399 第13章 多线程编程(教学视频:121分钟) 405 13.1 多线程...

Global site tag (gtag.js) - Google Analytics