——Collection集合的概述
来源:互联网 发布:人机交互是人工智能吗 编辑:程序博客网 时间:2024/06/17 17:26
---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------
集合类
为什么出现集合类?
面对对象语言对事物的描述都是以对象的形式,所以为了方便对多个对象操作,就对对象进行
存储,集合存储对象最常用的一种方式。数组和集合类同时容器,有何不同?
1,数组虽然也可以存储对象,但长度是固定的;
2,集合长度是可变的。3,数组中可以存储基本数据类型和引用类型,集合只能存储对象。
集合类的特点:1,集合只用于存储对象;
2,集合长度是可变的;3,集合可以存储不同类型的对象。
注:集合中存储的都是对象的引用(地址)。Iterator迭代器:(类似于玩具城的一个投币抓取玩具的机器,它们内部都有一个夹子用于取玩具,这个夹子相当于迭代器)
用于取出集合中元素的方式。集合框架:
为什么会出现这些集合框架呢?因为每个容器对数据的存储方式都有不同。
这个存储方式称之为:数据结构。集合框架图:
List(元素有序,带下标的,可重复)
|--ArrayList:底层的数据结构使用的是数组结构,特点是查询的效率高,但是增删稍慢。
注:线程不同步初始化默认容量为10的空列表,且每次增加50%的容量。
|--LinkedList:底层使用的是链表结构,增删效率高,遍历效率低。
|--Vector:底层是数组的数据结构。线程时同步的,所以查询效率低。功能和ArrayList一样。
注:初始化默认容量为10的空列表,且每次增加100%的容量。Set(元素无序,不带下标的,不可重复)操作和Collection方法一样
|--HashSet:
底层数据结构是哈希表。按照哈希值存储。哈希表在存储时先判断哈希值是否一样,
若哈希值不一样则直接存储,若哈希值一样,则在比较是否是同一对象。如果是,则返回false。
HashSet是如何保证元素的唯一性呢?是通过元素的两个方法:hashCode() 和 equals()两个方法。
如果元素的哈希值不相同,不会判断equals是否为true。当哈希值不同的时候才会调用equals方法进行判断。
|--TreeSet:可以对Set集合中的元素进行自然排序。底层数据结构是二叉树。
保证元素唯一性的依据是:compareTo方法返回值为0;步骤:
1,元素类实现Compareable接口,实现compareTo方法。特点:
一,TreeSet:在存储数据的时候要求元素对象必须具有比较性,即实现Compareable接口。并实现其中的compareTo方法;其返回值为正整数,0,负整数。零表示相等。
二,当主要条件比较之后,还要比较次要条件。三,如果compareTo方法返回值是0,则不添加元素。
四,输出的时候是按照二叉树的由小到大输出的,如果要按顺序输出,则compareTo方法要返回都是正整数。倒序输出则是,要compareTo方法返回是负整数。
五,TreeSet的第二种排序方式。
当元素自身不具备比较性时,或者具备的比较性不是所需要的。这时就需要集合自身具备比较性。TreeSet的构造函数初始化时给定比较性
步骤:1,定义一个类实现Comparetor接口,重写compare方法。
2,将定义的类对象,作为TreeSet初始化时,构造函数的参数。
集合中常用的基本方法:
1,添加:
1.1,boolean add(E e):用于向集合红在哪个添加当元素。1.2,boolean addAll(Collection<? extends E> c)
将指定 collection 中的所有元素都添加到此 collection 中(可选操作)。2,获取:
2.1,int size():返回该集合中的元素个数
2.2, boolean contains(Object o)如果此 collection 包含指定的元素,则返回 true。
2.3, boolean isEmpty()如果此 collection 不包含元素,则返回 true。
2.4, boolean containsAll(Collection<?> c)如果此 collection 包含指定 collection 中的所有元素,则返回 true。
3,修改:3.1, boolean retainAll(Collection<?> c)
获得该集合与指定集合元素的交集,耳朵没有则该集合返回为0个元素的集合。4,删除:
4.1,boolean remove(Object o)从此 collection 中移除指定元素的单个元素,如果存在的话(可选操作)。
4.2,boolean removeAll(Collection<?> c)移除此 collection 中那些也包含在指定 collection 中的所有元素(可选操作)。
4.3,void clear()移除此 collection 中的所有元素(可选操作)。
5,比较:List集合中元素的比较会自动调用equals()来进行比较,所以如果集合中的元素为自定义类型时,要重写equals方法。
集合共性方法的示例代码:
List:
List接口中的特有方法:
1,增:1.1,add(int index,Object element);在集合指定位置插入元素
1.2,add(int index,alection<E> al);在指定位置插入一个集合的元素
2,查:
2.1,int get(int index);获得指定位置的元素2.2,List sublist(int offset,int end);获得从offset(包含)位置到end(不包含)位置的子集合
2.3,int indexOf(Object obj)//获取元素在集合中的索引。2.4,listIterator listIterator();//获得list迭代器,该迭代器是List中特有的迭代器,是iterator的子接口。
//且可以对集合的元素进行添加,删除,获取,修改。3,删:
remove(int index);删除指定位置的元素
4,改:set(int index,Object element);设置指定位置的元素为element。
注:List中的listIterator()方法的特殊之处。
ListIterator是List集合特有的迭代器,是Iterator的子接口。在迭代时,不可以通过集合对象的方法操作集合中的元素。
因为会发生ConcurrentModificationException异常。所以,在迭代器时,只能用迭代器的方式操作元素,可是Iterator方法的功能时有限的。
只能对元素进行判断,取出,删除的操作。
如果要再迭代时,执行添加,修改等,就需要使用其子接口,ListIterator.
注:该接口只能通过List集合的listIterator()方法获取。所以,只有List及其子类可以使用。
List集合特有方法的示例代码:
---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------
- ——Collection集合的概述
- 黑马程序员——集合(一)--集合的数据结构、集合概述、Collection、遍历、List、Set、比较和排序、Map
- 黑马程序员——集合框架Collection概述
- Java集合详解(一) —— Collection与Map概述
- 集合、Collection、List的总体概述
- 集合框架Collection概述
- Java--集合--Collection--概述
- Java中Collection集合概述
- java集合2——集合collection的一些练习题
- 【我的Java笔记】Collection集合的概述 & List
- 集合框架_Collection集合的功能概述、Collection集合的基本功能测试
- 集合框架——Collection
- 集合框架——collection
- Java集合—Collection篇
- Javase—集合框架Collection
- 集合1——Collection集合
- Collection的功能概述
- 黑马程序员——Collection集合的一点介绍
- Mac idea 快捷键
- AVX Intrinsics各函数介绍
- [iPhone高级] 基于XMPP的IOS聊天客户端程序(IOS端二)
- Android 对话框(Dialog)大全 建立你自己的对话框
- 并发框架Disruptor译文
- ——Collection集合的概述
- android面试题
- 状态压缩
- 第六届中国商用飞机论坛 2014
- poj 2063& zoj 2224 Investment
- 可以免费使用的PDF转换器PDF转换器注册码
- Csipsimple:UnsatisfiedLinkError: Couldn't load stlport_shared: findLibrary returned nul
- String与StringBuffer的区别
- 资 用 功 率 和 额 定 功 率