Java Collection(集合)简析

类集:在C++中叫做容器(container),而在Java中叫做类集

Collection(类集):最基本的集合接口,一个Collection代表一组Object集合。

Collection(类集)特形:

1、  元素(Elements)存放:

  1. 可以存放相同的Elements;
  2. 不可以存放相同的Elements;

2、 元素(Elements)顺序:

  1. 有序;
  2. 无序;

Collection(类集)优点:

  1. 程序处理对象组的方法标准化;
  2. 高性能;对基本类集(动态数组,链接表,树和散列表)的实现是高效率的。一般很少需要人工去对这些“数据引擎”编写代码。
  3. 允许不同类型的类集以相同的方式和高度互操作方式工作;
  4. 容易扩展和/或修改;
  5. 拥有将标准数组融合到类集框架中的机制;
  6. 算法操作简单;类集算法在Collections类中被定义为静态方法(如:max、min、reverse.......),因此它们可以被所有的类集所利用。
  7. 类集元素(Elements)访问简单。iterator提供了一个多用途,标准化的方法,通过由Iterator定义的方法,任一类集类的元素都能被访问到。

集合框架:就是一个用来表示和操作集合的统一的架构,包含了实现集合的接口与类。

  • Collection:集合层次中的根接口,JDK没有提供这个接口直接的实现类。
  • List:是一个有序的集合,可以包含重复的元素。提供了按索引访问的方式。

ArrayList:可以通俗的理解能够自动增长容量的数组。

LinkedList:可以通谷的理解为存放Entry对象的双向循环链表。

  • Set:不能包含重复的元素。SortedSet是一个按照升序排列元素的Set。

HashSet:可以通俗的理解为随意的向集合中抛对象,集合中的对象是无序的;

LinkedHashSet:可以通俗的理解为随意的向集合中抛对象,集合中的对象是按抛进的先后顺序进行链表排序的;

TreeSet:可以通俗的理解为随意的向集合中抛对象,集合中的对象是根据指定比较器进行排序的;

  • Map:包含了key-value对。Map不能包含重复的key。SortedMap是一个按照升序排列key的Map。

HashMap:可以通俗的理解为存放不同标记(Key)的对象(Value)的集合;

TreeMap:可以通俗的理解为存放不同标记(Key)的对象(Value)的集合并按标记(Key)通过指定比较器进行排序。

注:

1. HashSet是通过HashMap实现的,TreeSet是通过TreeMap实现的,只不过Set用的只是Map的key
                    2. Map的key和Set都有一个共同的特性就是集合的唯一性.TreeMap更是多了一个排序的功能.
                    3. hashCode和equal()是HashMap用的, 因为无需排序所以只需要关注定位和唯一性即可.
                        a. hashCode是用来计算hash值的,hash值是用来确定hash表索引的.
                        b. hash表中的一个索引处存放的是一张链表, 所以还要通过equal方法循环比较链上的每一个对象才可以真正定位到键值对应的Entry.
                       c. put时,如果hash表中没定位到,就在链表前加一个Entry,如果定位到了,则更换Entry中的value,并返回旧value
                   4. 由于TreeMap需要排序,所以需要一个Comparator为键值进行大小比较.当然也是用Comparator定位的.
                       a. Comparator可以在创建TreeMap时指定
                       b. 如果创建时没有确定,那么就会使用key.compareTo()方法,这就要求key必须实现Comparable接口.
                       c. TreeMap是使用Tree数据结构实现的,所以使用compare接口就可以完成定位了.

时间: 2024-10-29 19:08:08

Java Collection(集合)简析的相关文章

Java Collection集合方法

一.简单方法 package cn.itcast.day15; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; /** * 集合的由来: * 我们学习的是面向对象语言,而面向对象语言对事物的描述是通过对象体现的,为了方便对多个对象进行操作,我们就必须把这多个对象进行存储. * 而要想存储多个对象,就不能是一个基本的变量,而应该是一个容器内的对象,在我们目前所学的知识里面,有哪些是容

Java——Collection集合、迭代器、泛型

集合 ——集合就是java提供的一种容器,可以用来存储多个数据. 集合和数组的区别 数组的长度是固定的.集合的长度是可变的. 数组中存储的是同一类型的元素,可以存储基本数据类型值. 集合存储的都是对象.而且对象的类型可以不一致.在开发中一般当对象多的时候,使用集合进行存储. 接口继承关系与实现 集合类存放于 Java.util 包中,主要有 3 种:set(集).list(列表包含 Queue)和 map(映射). 1. **Collection:**Collection 是集合 List.Se

Java Collection集合中的iterator方法

Iterator接口的概述 /** * java.util.Iterator接口:选代器(对集合进行遍历) * 有两个常用的方法 * boolean hasNext() * 如果仍有元素可以迭代,则返回true. * 即判断集合中还有没有下ー个元素,有就返回true,没有就返回 false * E next() * 返回送代的下一个元素. * 即取出集合中的下一个元素 * iterator迭代器,是一个接口,我们无法直接使用,需要使用Iterator接口的实现类对象. * 获取实现类的方式比较特

Java Collection集合

一.集合概述 集合,就类似一个容器,可以存储多个数据. 之前学习的数组也是一种容器,而集合与数组主要区别在于: 数组的长度是固定的,集合的长度是可变的 数组存储的是同一类型的元素,主要是基本类型,而集合存储的都是对象,而且对象的类型可以不一致 Java的集合按照存储结构可以分为两类:单列集合Collection和双列集合Map,两类集合都在java.util包中. java.util包主要提供了三种类型的集合: List:一种元素有序,元素可重复的集合 Set:一种没有重复元素,元素无序的集合

Java——Collection集合的常规用法

Collection 接口是 List .Set 和 Queue 接口的父接口,该接口定义的方法即可用于操作 Set 集合,也可用于操作 List 和Queue 集合. Collection 接口里定义了如下操作集合元素的方法. /** * boolean add(Object o): 该方法用于向集合里添加一个元素.如果集合对象被添加操作改变了,则返回 true * * boolean addAll(Collection c):该方法把集合c里的所有元素添加到指定集合里.如果集合对象被添加操作

java collection 集合源码分析(一)

collection 为java集合的接口,collection的接口继承Iterable public interface Collection<E> extends Iterable<E> 没有自己在画类图了 找到网上有大哥画的关系图如下 上图中有个位置可能错了,AbstrctList应该继承自 public abstract class AbstractList<E> extends AbstractCollection<E> implements L

Java Collection集合接口

Collection接口是赖以集合框架建立的基础.它声明的所有集合的核心方法.这些方法概括于下表中. 因为所有集合都要实现Collection,熟悉它的方法是对框架有清晰的认识很有必要.这几种方法都可以抛出一个 UnsupportedOperationException. SN 方法及描述 1 boolean add(Object obj) 添加obj 到调用集合.如果obj被添加到集合,则返回true.如果obj已经是集合的成员或者如果集合不允许重复则返回false. 2 boolean ad

java内存管理简析

作为java程序员,因为有虚拟机的自动内存管理,所以不需要再向C和C++程序员那样灾区写delete和free方法,但是java中是不是就不存在内存泄露问题呢,答案是否定的,java中一样存在内存泄漏的问题.所以我们需要了解虚拟机是怎样使用内存的. Java虚拟机在执行Java程序的过程中会将管理的内存划分不同的区域,以作不同的用途,有的区域随着虚拟机进程的启动而存在,有些区域则是依赖用户线程的启动和结束而建立和销毁. 通常许多人只把java的内存简单的划分为堆区,栈区,静态区,这样的分法十分不

java collection 集合源码分析(二) map

Map(接口) Map是一个独立的接口,内部包含一个Entry的接口,用于管理每个节点 public interface Map<K,V>{     interface Entry<K,V> {          } } AbstractMap 抽象类实现Map接口,常用的HashMap和TreeMap都继承此类 public abstract class AbstractMap<K,V> implements Map<K,V> 这个类下面提供了一个将Map

Java异常体系简析

最近在阅读<Java编程思想>的时候看到了书中对异常的描述,结合自己阅读源码经历,谈谈自己对异常的理解.首先记住下面两句话: 除非你能解决这个异常,否则不要捕获它,如果打算记录错误消息,那么别忘了把它再抛出去. 异常既代表一种错误,又可以代表一个消息. 一.为什么会有异常 这个问题其实不难理解,如果一切都按我们设计好的进行,那么一般(不一般的情况是我们设计的就是有缺陷的)是不会出现异常的,比如说一个除法操作: public int div(int x,int y){ return x/y; }