昨天晚上看了编程思想4的持有对象,所以把学到看到的一些记记背背的方面给总结一下。

java的容器主要分为两类,一个是实现了接口Collection的一类,还有一个是实现了Map接口的一类。

继承Collction接口的主要有List、Set接口还有Queue。Collection继承了Iterator接口,让实现类可以foreach遍历。

继承List接口的主要是ArrayList和LinkedList。

ArrayList的优势在于随机访问,LinkedList的优势则是更好的插入删除,另外LinkedList还实现了Queue接口,这让LinkedList可以当成一个队列的数据结构使用

List的方法(参数不写):

1、contains() 用来确认List中是不是有某个对象           (还有containsAll() 方法)

2、 add()   添加一个对象                                         (还有addAll() 方法)

3、 get()    根据传入的位置获取一个对象

4、remove()  用来移除List中某个对象                        (还有removeAll() 方法)

5、indexOf()  返回某个对象在List中的位置

6、subList()  截取List集合中的一部分并返回

7、sort()   对List集合进行排序

8、retainAll()   计算和传入的Collection集合的交集,返回boolean,交集结果保存在List中

9 、set()   修改List集合中某个位置上的对象

10、isEmpty()  判断List集合是不是空

11、clear()   清空List集合

12、 toArray()   根据传入参数生成一个指定类型的数组,不传参默认是Object类型数组

13、 size()   计算List集合的长度

注 :以上需要比较的操作,对于传入的对象,都是使用传入的对象参数的equals方法和集合中的对象比较

ListIterator

Iterator遍历一个集合,只能向前遍历( hasNext(), next() ),而ListIterator可以具备双向索引,不过ListIterator只能作用于List

LinkedList实现了List的接口,同时又实现了Queue接口

1、getFirst() element()  两者都是返回列表中的第一个元素,如果是空,抛出异常 NoSuchElementException

2、peek()  返回列表中的第一个元素,如果是空,返回null

3、removeFirst()  删除列表中的第一个元素,如果是空,抛出异常 NoSuchElementException  (空参的remove()方法同样)

4、poll() 删除列表中的第一个元素,如果是空,返回null

5、add()  addFirst() addLast()   向列表头(尾)添加元素

6、offer()  offerFirst()  offerLast() 向列表头(尾)添加元素

offer和add的区别在于操作一个有容量限制的队列,前者失败后返回一个false,后者抛出一个异常

除了队列之外,LinkedList同样可以作为Stack栈来使用 (这里的Stack指的是数据结构,不是java中的Stack类,LinkedList和Stack没有继承关系)

7、push()  向顶部添加一个对象

8、pop()  移除一个顶部对象并返回这个对象

不同于List集合,Set集合不同存放重复的元素,Set的接口和Collection接口字段方法一样,Set集合的实现主要有HashSet、TreeSet、LinkedHashSet。HashSet使用的是散列、TreeSet使用的是红黑树的数据结构,LinkedHashSet也用散列,还用链表保持位置顺序。因此这三种结构的区别就是HashSet拥有最快的查询速度,有时有序,但不保证一直有序。TreeSet始终处于排序的状态。LinkedHashSet保持元素的插入顺序同时也具有快速的访问能力。

Collection集合系列还有一个Queue,Queue除了LinkedList的实现之外,还具有一个PriorityQueue的实现。PriorityQueue队列中可以根据一个弹出队列优先顺序的规则来弹出元素。这个规则需要自己定义,方法是比如PriorityQueue集合中存的是Student类, 定义Student类的时候去实现一个Compareble接口,在一个int类型返回值Object参数的compareTo方法中去自定义规则,把传入的Object参数(先转型成Student)和当前Student类的某个字段比较,返回-1说明比当前Student后弹出,返回1先弹出(还有一个0自己体会)

Map接口实现和Set相似,三个实现类HashMap、TreeMap、LinkedHashMap,功能特点也和Set相似。Map和Collection是平行关系,也并没有继承Iterator接口,不过Map可以通过keySet()方法将键转化成Set遍历,或者通过EntrySet()转化成Entry的Set对象遍历

java集合基础篇 简单总结的更多相关文章

  1. 你所不知道的库存超限做法 服务器一般达到多少qps比较好[转] JAVA格物致知基础篇:你所不知道的返回码 深入了解EntityFramework Core 2.1延迟加载(Lazy Loading) EntityFramework 6.x和EntityFramework Core关系映射中导航属性必须是public? 藏在正则表达式里的陷阱 两道面试题,带你解析Java类加载机制

    你所不知道的库存超限做法 在互联网企业中,限购的做法,多种多样,有的别出心裁,有的因循守旧,但是种种做法皆想达到的目的,无外乎几种,商品卖的完,系统抗的住,库存不超限.虽然短短数语,却有着说不完,道不 ...

  2. java 线程基础篇,看这一篇就够了。

    前言: Java三大基础框架:集合,线程,io基本是开发必用,面试必问的核心内容,今天我们讲讲线程. 想要把线程理解透彻,这需要具备很多方面的知识和经验,本篇主要是关于线程基础包括线程状态和常用方法. ...

  3. Java 集合基础详细介绍

    一.Java集合框架概述 集合.数组都是对多个数据进行存储操作的结构,简称Java容器.此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.txt, .jpg, .avi,数据库中).Jav ...

  4. JDBC-使用Java连接数据库-基础篇

    这是小主第一次写Java连接数据库博客,初学Java之时,Java连接数据库是我最头疼的,不过经过一个月的学习,也差不多略有收获,所以给大家分享一下. Java连接数据库大约需要五大步骤: 创建数据库 ...

  5. Java 集合基础入门,看这篇就够了

    集合 1.父接口:Collection java.util.Collection 是进行单对象保存的最大父接口,即每次利用 Collection 接口都只能保存一个对象信息.定义如下: public ...

  6. java 学习第一篇简单基础

    Java基础 Java Java 和C#有着极为相似的语法. 和C#都是面向对象的高级程序语言. JAVA是一个开源,公开的语言,有着极其丰富的开源库和其他资源. JAVA分类 JAVA分SE EE ...

  7. 新年在家学java之基础篇--循环&数组

    因为“野味肺炎”的肆虐,过年被迫宅家只能吃了睡.睡了吃.这么下次只能长膘脑子空空,不如趁此机会重新学习java基础,为日后做铺垫~ 循环结构: 几种循环:for(::),while(){},do{}w ...

  8. java集合基础

    集合概念与作用 1现实生活中把很多事物凑在一起就是集合.java中的集合类:是一种工具,就像是容器,存储任意数量的有共同属性的对象. 2在类的内部,对数据进行组织: 简单而快速的搜索大数量的条目 有的 ...

  9. Java编程基础篇第一章

    计算机语言 人与计算机交流的方式. 计算机语言有很多种如:C语言,c++,Java等 人机交互 软件的出现实现了人与计算机之间的更好的交流(交互) 交互方式 图形化界面:便于交互,容易操作,简单直观, ...

随机推荐

  1. JDBC事务和数据库事务嵌套的讨论 .

    首先必须执行con.setAutoCommit(false)方法,将JDBC事务设置为手动提交,否则手动提交con.commit()无效,手动回滚con.rollback()引发SQLExceptio ...

  2. 教你如何封装异步网络连接NSURLConnection实现带有百分比的下载

    教你如何封装异步网络连接NSURLConnection实现带有百分比的下载 注:本教程需要你对block有着较为深刻的理解,且对如何封装对象有着一些经验. 也许你已经用惯了AFNetworking2. ...

  3. kvm虚拟机shutdown命令不起作用

    使用 virsh shutdown vmhost 发现虚拟机没有关闭,命令没有起作用. 只能使用 virsh destroy vmhost 来强制关闭虚拟机 解决: 在vmhost虚拟机里面安装acp ...

  4. openvpn(上)

    VPN概述:(全称Virtual Private Network)虚拟专用网络,是依靠ISP和其他的NSP,在公网中建立专用的数据通信网络的技术,可以为企业之间或者个人与企业之间提供安全的数据传输隧道 ...

  5. selenium 滑动解锁(drag_and_drop_by_offset)

    from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains from ...

  6. VMware workstation 虚拟机安装帮助文档(以windows server 2003为例)

    本次安装以Windows server 2003为例: 1.在桌面上双击VMware快捷方式打开,并点击文件>新建虚拟机 2.这里选择默认的“典型”,点击下一步 3.选择浏览,找到windows ...

  7. C#图解教程读书笔记(第2章 C#编程概述)

    这章主要是一个对于C#程序的概括解释 和C/C++不同,不是用include声明引用的头文件,而是通过using的方式,声明引用的命名空间. 命名和C/C++类似,并且也是区分大小写的,这件事情在VB ...

  8. pg 关于不插入重复字段的方法

    首先在表的某列加入唯一约束 alter table language_pms add CONSTRAINT language_pms_unique unique(xml); insert into l ...

  9. 六种排序算法的JavaScript实现以及总结

    最近几天在系统的复习排序算法,之前都没有系统性的学习过,也没有留下过什么笔记,所以很快就忘了,这次好好地学习一下. 首先说明为了减少限制,以下代码通通运行于Node V8引擎而非浏览器,源码在我的Gi ...

  10. Ubuntu下Apache配置网站根路径

    安装之后apache默认的跟路径是/var/www/   如何修改这个默认路径呢?   直接编辑/etc/apache2/sites-available/default-ssl.conf,将Docum ...