说到集合框架,其实刚开始学的时候有点自我感觉很简单,自己认为就是集合类中的框架之类的,但是当自己简单把它过了一变后发现懵里懵懂的,什么都没懂,于是自己又认认真真的看了一遍,才弄明白。

说到集合框架就不得不说集合类,集合类的由来是什么呢?简单的说就是对象用于封装特有数据,对象多了需要存储,如果对象的个数不确定,那么就是用集合容器进行存储。

集合类的特点:

用于存储对象的容器;

集合的长度是可变的;

集合中不可以存储基本数据类型值。

集合容器因为内部的数据结构不同,有多重具体容器,不断的向上抽取,就形成了集合框架。

框架的顶层就是Collection接口。

Collection的常见方法:

1.添加:

boolean add(Object obj);

boolean addAll(Collection coll);

2.删除:

boolean remove(Object obj);

boolean removeAll(Collection coll);//删除所有元素

void clear();//清空整个集合

3.判断:

boolean contains(Object obj);

boolean containsAll(Collection coll);

boolean isEmpty();//判断集合中是否有元素。

4.获取:

int size();

Iterator iterator();//专门用于取出集合中元素的方式(迭代器)

该对象必须依赖于具体容器,因为每一个容器的数据结构都不同。所以该迭代器对象是在容器中进行内部实现的。对于使用容器者而言,具体的实现不重要,只要通过容器获取到该实现的迭代器的对象即可,也就是iterator方法。

★Iterator接口就是对所有的Collection容器进行元素取出的公共接口。

5.其他:

boolean retainAll(Collection coll);取交集。你手里有1.2.3 我手里有2.4.5,取交集就是2

Object[] toArray();//将集合转成数组

然后Collection下面有两个重要的接口

List:有序(存入和取出的顺序一致),元素都有索引(角标),元素可以重复的。

Set:元素不能重复。

而我们常用的还是List这个接口

List:特有的常见方法:有一个共性特点就是都可以操作角标。

1.添加

void add(index,element);

void add(index,collection);

2.删除

Object remove(index);

3.修改

Object set(index,element);

4.获取

Object get(index);

int indexOf(object);

int lastIndexOf(object);

List subList(form,to);

list:集合是可以完成对元素的增删改查。

List:

|–Vector:内部是数组数据结构,是同步的。(几乎不用了…老版本的)增删,查询都很慢。

|–ArrayList:内部是数组数据结构,是不同步的。替代了Vector。查询的速度快。

|–LinkedList:内部是链表数据结构,是不同步的。 增删元素的速度很快。

LinkedList:

addFist();

addLast();

jdk1.6升级

offerFirst();

offerLast();

getFist();//获取但不移除,如果链表为空,抛出NoSuchElementException

getLast();

jdk1.6升级

peekFirst();//获取但不移除,如果链表为空,返回null

peekLast();

removeFirst();//获取并移除,如果链表为空,抛出NoSuchElementException

removeLast();

jdk1.6升级

pollFirst();//获取并移除,如果链表为空,返回null

pollLast();

Set:元素不可以重复,是无序。

Set接口中的方法和Collection一致。

|–HashSet:内部数据结构是哈希表 ,是不同步的。

如何保证该集合的元素唯一性呢?

是通过对象的hashCode和equals方法来完成对象唯一性的。

如果对象的hashCode值不同,那么不用判断equals方法,就直接存储到哈希表中。

如果对象的hashCode值相同,那么要再次判断对象的equals方法是否为true。

如果为true,视为相同元素,不存。如果为false,那么视为不同元素,就进行存储。

记住:如果元素要存储到HashSet集合中,必须覆盖hashCode方法和equals方法。

一般情况下,如果定义的类会产生很多对象,比如人,学生,书,通常都需要覆盖equals,hashCode方法。

建立对象判断是否相同的依据。

|–TreeSet:可以对Set集合中的元素进行排序。是不同步的。

判断元素唯一性的方式:就是根据比较方法的返回结果是否是0,是0,就是相同元素,不存。

TreeSet对元素进行排序的方式一:

让元素自身具备比较功能,元就需要实现Comparable接口。覆盖compareTo方法。

如果不要按照对象中具备的自然顺序进行排序。如果对象中不具备自然顺序。怎么办?

可以使用TreeSet集合第二种排序方式二:

让集合自身具备比较功能,定义一个类实现Comparator接口,覆盖compare方法。

将该类对象作为参数传递给TreeSet集合的构造函数。

java api 框架_java常用对象API之集合框架相关推荐

  1. java md5库_Java常用类库API之MD5简单使用

    常用类库--MD5简单使用 MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash v ...

  2. hashset java api_java常用对象API中集合框架之HashSet

    之前在<java常用对象API之集合框架>这篇文章中已经将所有集合框架做了一个总体的大纲陈列,并阐述了所有Collection接口下的子接口和类的作用解释,那么接下来的文章智言还是想把里面 ...

  3. java apidoc案例_java 自动生成api 文档 :apidoc

    官网:apidocjs 首先声明下,apidoc是基于注释来生成文档的,它不基于任何框架,而且支持大多数编程语言,适用于java项目.跟已有的项目框架没有任何关系 一.apidoc简介 apidoc通 ...

  4. java executor 异步_Java并发编程11-异步执行框架Executor

    1 Executor框架的简介 1.5后引入的Executor框架的最大优点是把任务的提交和执行解耦.要执行任务的人只需把Task描述清楚,然后提交即可.这个Task是怎么被执行的,被谁执行的,什么时 ...

  5. java常见业务对象_Java各种对象(PO,BO,VO,DTO,POJO,DAO,Entity,JavaBean,JavaBeans)的区分...

    PO:持久对象 (persistent object),po(persistent object)就是在Object/Relation Mapping框架中的Entity,po的每个属性基本上都对应数 ...

  6. freemarker的测试结果框架_java必背综合知识点总结(框架篇)

    框架篇 一.Struts1的运行原理 在启动时通过前端总控制器ActionServlet加载struts-config.xml并进行解析,当用户在jsp页面发送请求被struts1的核心控制器Acti ...

  7. 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合...

    不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...

  8. Java中级部分内容笔记 异常 I/O 集合框架 泛型 Lambda

    Java中级学习过程 参考的是所长的Java中级内容 1异常处理 1.1异常的定义 在我们打开文件的过程中,文件可能存在且被打开,也有可能不存在.在此时,Java会自动抛出一个异常,让我们必须去处理两 ...

  9. java中单根_java之 单根继承与集合

    1.单根继承 概念: 单根继承,意味着所有类的继承,都继承自单一的基类的继承模式 优点: (1)所有对象都具有一个共用接口,归根到底都是相同的基本类型. (1)所有对象都具有一个共用接口,归根到底都是 ...

最新文章

  1. 「Linux」作怪的网络
  2. 谁干的mysql无密码登录?
  3. 为什么叫python编程-月薪上万的Python编程,为什么你还没入门就放弃了?
  4. Solr相似度算法一:Lucene TF-IDF 相关性算分公式
  5. VTK修炼之道8_三维场景基本要素:相机
  6. Vue指令篇_v-for_列表渲染
  7. Day03 javascript详解
  8. 成为Java流大师–第6部分:使用流创建新的数据库应用程序
  9. Windows Server AppFabric缓存参考实例和方案选择 2/3
  10. 【Oracle】手工建库时启动到nomount状态时错误ORA-09925,ORA-01017
  11. 谈谈网络游戏中的延迟解决方案
  12. 如何禁止用户删除计算机服务,怎样才能禁止别人删除我电脑中的文件?
  13. Windows事件ID及解释大全
  14. python 方波信号_numpy绘制方波及方波无穷级数的表示
  15. 针对win2003服务器的恶意代码攻击
  16. 春招秋招笔试面试时间(2020年)
  17. xbox手柄_请不要通过Xbox Live判断白人
  18. 抵御风险网站防攻击,国产浏览器能做的有很多
  19. 攻防世界 misc 高手区 Miscellaneous-300
  20. windows下nginx+lua+redis实现短域名服务

热门文章

  1. CUDA运行时 Runtime(一)
  2. 图像超分辨率与天气预报
  3. 2021年大数据环境搭建(二):分布式环境搭建
  4. 2021年大数据Spark(十五):Spark Core的RDD常用算子
  5. Python:Scrapy的安装和入门案例
  6. net start mysql 提示:服务名无效 请键入NET HELPING 2185以获得更多的帮助的问题
  7. android 字体上添加横线,字体下面添加下划线
  8. Manifest merger failed Suggestion: add 'tools:replace=“Android:value”' to meta-data element at And
  9. loj2058 「TJOI / HEOI2016」求和 NTT
  10. 记一次阿里云RDS与自建数据库同步中断的补救过程