Java中Collection 的基本认识
集合Conllection的基本概念:
1、集合的基本认识:如StringBuffer&StringBuilder是集合(存储的对象类型是String)。数组、对象与其很相似,但是还有区别。
2、集合的由来:对象用于封装特有数据,对象多了需要存储,如果对象的个数不确定,就需要使用集合来进行存储。
3、集合的特点:
(1)用于存储对象的容器;即集合中存储的元素是对象
(2)集合的长度是可变的;
(3)集合是不可以存储基本数据类型的;(集合存储基本数据类型时会先进行自动封装成其对应的对象后再进行存储)
4、集合框架体系:
集合是用于存储对象的容器。而每种容器内部都有其独特的数据结构,正因为不同的容器内部数据结构不同,使其各自有自己独特的使用场景。虽然每个
容器有其独特的结构但是类似的容器还是存在共性的(至少对容器内部对象的操作方法上是存在共性的),所以这些共性方法能被不断抽取,最终形成了集合框架体系。
5、集合框架的顶层接口(根接口):Collection
Collection的常见方法:
(1)添加
boolean add(E o);
boolean add(Collection<? extends E> c);
(2)删除
boolean remove(Object o);
boolean removeAll(Collection<? extends E> c)
void clear();
(3)判断
a.判断集合中是否有元素:boolean isEmpty();
b.判断集合中是否包含某个元素:boolean contains(Object o);
c.判断集合中是否包含某些元素:boolean contains(Collection<?> c);
(4)获取
a.获取集合中元素个数:int size();
b.遍历集合中所有元素:Iterator<E> iterator();
c.判断两个集合中是否存在相同的元素并保留两个集合中相同的元素删除不同的元素:boolean retainAll(Collection<?> c);
(5)其他
将集合中元素转为数组:a. Ojbect[] toArray();
b. <T> T[] toArray(); 泛型
6、迭代器 Iterator
(1)通过集合对象获取其对应的Iterator对象;
(2)判断是否存在下一个元素;
(3)取出该元素并将迭代器对象指向下一个元素;
Iterator iterator():取出元素的方式:迭代器。
该对象必须依赖于具体容器,因为每一个容器的数据结构都不同。
所以该迭代器对象是在容器中进行内部实现的。
对于使用容器者而言,具体的实现不重要,只要通过容器获取到该实现的迭代器的对象即可,也就是iterator方法。
7、Collection两大体系:链表List、集合Set
List特点:元素有序;元素可以重复;元素都有索引(角标)
Set 特点:元素无序;元素不可以重复;
List特有的常见方法:有一个共性就是可以操作角标。
8、List三大常用集合:
Vector:内部是数组数据结构,是同步的(线程安全的)。增删查询都很慢。
ArrayList:内部是数组数据结构,是不同步的(线程不安全的)。替代了Vector。查询速度快,增删比较慢。
LinkedList:内部是链表数据结构,是不同步的(线程不安全的)。增删元素速度快。
其中,ArrayList最常用。
9、Set常用集合:
Set中方法与Collection一致。
(1)HashSet:内部数据结构是哈希表,是不同步的。
Set集合中元素都必须是唯一的,HashSet作为其子类也需保证元素的唯一性。
判断元素唯一性的方式:
通过存储对象(元素)的hashCode和equals方法来完成对象唯一性的。
如果对象的hashCode值不同,那么不用调用equals方法就会将对象直接存储到集合中;
如果对象的hashCode值相同,那么需调用equals方法判断返回值是否为true,
若为false, 则视为不同元素,就会直接存储;
若为true, 则视为相同元素,不会存储。
PS:如果要使用HashSet集合存储元素,该元素的类必须覆盖hashCode方法和equals方法。
一般情况下,如果定义的类会产生很多对象,通常都需要覆盖equals,hashCode方法。建立对象判断是否相同的依据。
(2)TreeSet:保证元素唯一性的同时可以对内部元素进行排序,是不同步的。
判断元素唯一性的方式:
根据比较方法的返回结果是否为0,如果为0视为相同元素,不存;如果非0视为不同元素,则存。
TreeSet对元素的排序有两种方式:
方式一:使元素(对象)对应的类实现Comparable接口,覆盖compareTo方法。这样元素自身具有比较功能。
方式二:使TreeSet集合自身具有比较功能,定义一个类实现Comparable接口覆盖其compareTo方法。(相当于自定义了一个比较器)
将该类对象作为参数传递给TreeSet集合的构造函数。(TreeSet(Comparator<? super E> c) )
Java中Collection 的基本认识的更多相关文章
- Java中Collection和Collections的区别(引用自:http://www.cnblogs.com/dashi/p/3597937.html)
1.java.util.Collection 是一个集合接口(集合类的一个顶级接口).它提供了对集合对象进行基本操作的通用接口方法.Collection接口在Java 类库中有很多具体的实现.Co ...
- java中Collection类及其子类
1:对象数组(掌握) (1)数组既可以存储基本数据类型,也可以存储引用类型.它存储引用类型的时候的数组就叫对象数组. 2:集合(Collection)(掌握) (1)集合的由来? 我们学习的是Java ...
- java中Collection容器
1.容器(Collection)也称为集合, 在java中就是指对象的集合. 容器里存放的都只能是对象. 实际上是存放对象的指针(头部地址): 这里对于八种基本数据类型,在集合中实际存的是对应的包装类 ...
- Java中Collection和Collections的区别(转载)
转载来源:http://www.cnblogs.com/dashi/p/3597937.html 1.java.util.Collection 是一个集合接口(集合类的一个顶级接口).它提供了对集合对 ...
- java中collection、map、set、list简介 (转)
Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些Collection允许相同的元 ...
- JAVA中Collection接口和Map接口的主要实现类
Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些Collection允许相同的元素 ...
- Java中 Collection 、 List 、 Set 、 Map详解
一.容器( Collection ) 接口 容器( Collection )是最基本的集合接口,一个容器( Collection )保存一组对象( Object ),即对象是容器的元素( Ele ...
- java中Collection和Collections的区别
1.Collection: 它是java集合类的一个通用接口,所有集合类都实现的它 2.Collections: 它是一个封装集合类常用工具方法的类,不能被示例化,只支持静态调用
- java中Collection 与Collections的区别
1. Collection是集合类的一个顶级接口,其直接继承接口有List与Set 而Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序.搜索以及 ...
随机推荐
- Python误区之strip,lstrip,rstrip
最近在处理数据的时候,想把一个字符串开头的“)”符号去掉,所以使用targetStr.lstrip(")"),发现在 将处理完的数据插入到数据库时会出现编码报错,于是在网上搜到了这 ...
- Extjs添加行双击事件
var grid = new Ext.grid.GridPanel({ store: store, trackMouseOver: false, disableSelection: true, aut ...
- [笔记] Ubuntu 18.04安装Docker CE及nvidia-docker2流程
Docker的好处之一,就是在Container里面可以随意瞎搞,不用担心弄崩Host的环境. 而nvidia-docker2的好处是NVidia帮你配好了Host和Container之间的CUDA相 ...
- POJ - 2125 Destroying The Graph (最小点权覆盖)
题意:给一张图,现在要删去所有的边,删去一个点的所有入边和所有出边都有其对应\(W_{i+}\)和\(W_{i-}\).求删去该图的最小花费,并输出解 分析:简而言之就是用最小权值的点集去覆盖所有的边 ...
- 20145316《Java程序设计》实验一:Java开发环境的熟悉(Windows + IDEA)
20145316<Java程序设计>实验一:Java开发环境的熟悉(Windows + IDEA) 一.DOC命令行下Java程序开发 1.打开cmd,输入 mkdir 20145316命 ...
- python3_ftp文件传输
Python中的ftplib模块 Python中默认安装的ftplib模块定义了FTP类,其中函数有限,可用来实现简单的ftp客户端,用于上传或下载文件 FTP的工作流程及基本操作可参考协议RFC95 ...
- [转]总结一下CSS中的定位 Position 属性
在CSS中,Position 属性经常会用到,主要是绝对定位和相对定位,简单的使用都没有问题,尤其嵌套起来,就会有些混乱,今记录总结一下,防止久而忘之. CSS position 属性值: absol ...
- 单元测试工具Nunit
原文链接:http://blog.csdn.net/snowshinoy/article/details/6951352 调试 附加到: nunit-agent.exe进程:
- MySQL的索引是什么?怎么优化?
索引类似大学图书馆建书目索引,可以提高数据检索的效率,降低数据库的IO成本.MySQL在300万条记录左右性能开始逐渐下降,虽然官方文档说500~800w记录,所以大数据量建立索引是非常有必要的.My ...
- tomcat+svn+maven+jenkins实现自动构建
首先说明一个各软件的版本: tomcat:apache-tomcat-8.5.16.tar.gz maven:apache-maven-3.5.0-bin.tar.gz svn:subversion- ...