本文不是一个大而全的讲述Java Coleection 相关的APi, 而是笔者认为哪些是一个初学者所能够而且必须确切知道的知识点。

Collection 一脉

这里有我们比较常用的List<E>, Set<E>.

List<E>

实现这个接口的类有比较常见的ArrayList<E> 和 LinkedList<E>,还有Vector<E>.

Vector 是个线程安全的类:

public synchronized int lastIndexOf(Object o, int index) {
      if (index >= elementCount)
          throw new IndexOutOfBoundsException(index + " >= "+ elementCount);

      if (o == null) {
          for (int i = index; i >= 0; i--)
              if (elementData[i]==null)
                  return i;
      } else {
          for (int i = index; i >= 0; i--)
              if (o.equals(elementData[i]))
                  return i;
      }
      return -1;
  }

  public synchronized E firstElement() {
      if (elementCount == 0) {
          throw new NoSuchElementException();
      }
      return elementData(0);
  }

  public synchronized E lastElement() {

里面关键的方法都用了synchronized 关键字,作为线程安全的保障,当然效率也低了不少。

ArrayList 的结构类似于数组

LinkedList 的结构类似于链表

Set<E>

Set 一脉最大的区别就是里面的元素不允许重复。

比较熟悉的就是HashSet<E> 了。

这里必须注意的是HashCode 的算法。

Map 一脉

 * @param <K> the type of keys maintained by this map
 * @param <V> the type of mapped values
 *
 * @author  Josh Bloch
 * @see HashMap
 * @see TreeMap
 * @see Hashtable
 * @see SortedMap
 * @see Collection
 * @see Set
 * @since 1.2
 */
public interface Map<K,V> {

Map 一脉用来以键值对的形式存放。

上面的HashSet 里面其实放了一个HashMap<E,Object> 的内置的Map.

这里比较熟的应该就是HashMap 和ConcurrentMap 了。

Java Hour 67 Java Collection API的更多相关文章

  1. Java设置的读书笔记和集合框架Collection API

    一个.CollectionAPI 集合是一系列对象的聚集(Collection). 集合在程序设计中是一种重要的数据接口.Java中提供了有关集合的类库称为CollectionAPI. 集合实际上是用 ...

  2. Java 9 揭秘(13. Collection API 更新)

    Tips 做一个终身学习的人. 在本章中,主要介绍以下内容: 在JDK 9之前如何创建了不可变的list,set和map以及使用它们的问题. 如何使用JDK 9中的List接口的of()静态工厂方法创 ...

  3. java 深入技术二(Collection)

    1. java集合 存储和管理多个java对象 包括很多java类和接口 Collection List                              Set ArrayList  Lin ...

  4. Java 集合系列 02 Collection架构

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

  5. Java 8时间和日期API 20例

    本文由 ImportNew - Sandy 翻译自 javarevisited.欢迎加入翻译小组.转载请见文末要求. 伴随lambda表达式.streams以及一系列小优化,Java 8 推出了全新的 ...

  6. Java集合框架(Collection Framework)学习之 Collection与Map概貌

    写过Java的人都知道Java集合类,也用过Java集合类.Java集合类位于 java.util 这个包下,就像它的包名暗示的那样,Java集合类就是一套工具.它就像工匠的工具箱一样,它能给使用它的 ...

  7. idea中使用scala运行spark出现Exception in thread "main" java.lang.NoClassDefFoundError: scala/collection/GenTraversableOnce$class

    idea中使用scala运行spark出现: Exception in thread "main" java.lang.NoClassDefFoundError: scala/co ...

  8. [注意事项&amp;车轮]java源代码 产生局部javadoc api档

    随着Eclipse书写java码时间,有时候,因为我们不知道java函数返回.通过鼠标移动到java该功能,假设它javadoc相关内容将被显示. 但是,并非所有java代码javadoc:连装jav ...

  9. Java系统属性与Preferences API的简单介绍

    系统属性在和Preferences API都是键值对,前者只能当前应用程序中共享数据,而后者可以在用户的各个应用或用户之间共享数据. 系统属性 Java 的系统属性决定了 Java 程序实际运行的环境 ...

随机推荐

  1. 转:SQL子句的执行顺序

    SQL 不同于与其他编程语言的最明显特征是处理代码的顺序.在大数编程语言中,代码按编码顺序被处理,但是在SQL语言中,第一个被处理的子句是FROM子句,尽管SELECT语句第一个出现,但是几乎总是最后 ...

  2. .net MVC借助Iframe实现无刷新上传文件

    html: <div id="uploadwindow" style="display: none;"> <form action=" ...

  3. Largest BST Subtree

    Given a binary tree, find the largest subtree which is a Binary Search Tree (BST), where largest mea ...

  4. 外键约束 以及 数据库中实体的对应关系(1==1,1==n,n==n)

    1.1.1 外键约束 Create database day16; Use day16; 创建部门表: create table dept( did int primary key auto_incr ...

  5. Unity3d《Shader篇》自定义光照模型

    一.理论 公式1:被光照的物体最终所呈现的颜色公式 最终颜色=材质颜色*发光颜色 公式2:材质颜色 tex2D(_MainTex,uv) 公式3:光照颜色 光照颜色=自发光+环境光+漫反射+镜面反射 ...

  6. iOS 动画结束后 view的位置 待完善

    默认的动画属性,动画结束后,view会回到原始位置.但是如果设定了 CAAnimation的 removedOnCompletion 属性,那么view会保持这个位置!但是真实的接收 点击的frame ...

  7. ios中的RunLoop 和 android 中的Looper

    今天写android程序,用到了Handler,晚上回来查阅资料,发现了Looper这个概念. 看了一下网上关于Looper的资料,发现这个Looper跟ios中的Runloop基本的理念完全一致! ...

  8. [Linux]centOS7下RPM安装Perl

    1.下载rpm依赖包,依照顺序安装. perl-parent-0.225-244.el7.noarch   perl-HTTP-Tiny-0.033-3.el7.noarch   perl-podla ...

  9. ubuntu apc 安装

    在ubuntu下安装APC,只需要两条命令,便可将APC和php绑一起.     安装代码:          sudo apt-get install  -y apache2-prefork-dev ...

  10. 穹举,迭代,while循环。

    所有循环  必要条件 :   初始条件(注意初始条件的位置)   循环条件   循环体   状态改变: 1.穷举 将所有可能性全部全部走一遍,使用IF筛选出满足的情况 使用循环语句    for   ...