java基础知识总结(二)--集合

来源:互联网 发布:淘宝女士酒店职业装 编辑:程序博客网 时间:2024/05/15 05:57

这里写图片描述
一.集合
1.集合概述:由于我们使用的是面向对象语言,所以,我们要经常使用对象,而很多时候我们需要使用很多对象,而用数组对对象进行存储,长度是固定的,不适用于变化的数据.所以,java提供了一种容器,用于存储对象,这种容器就叫做集合.
2.集合和数组的区别:

(1)集合a.集合长度可变b.集合只能存储引用数据类型c.集合可以存储多种数据类型(2)数组a.数组长度是固定的b.数组可以存储基本数据类型和引用数据类型c.数组只能存储一种数据类型

3.collection集合的体系结构
这里写图片描述
4.迭代器

a.概念:按照某种方式重复的做事情,主要用于遍历集合中的元素b.迭代器定义为接口而不是类的原理:由于集合的数据结构不同,数据存储的方式也就不同,取出的方式也不同.定义为具体的实现类是不合适的,使用的时候,通过内部类实现c.常见问题:ConcurrentModificationException:并发修改异常    原因:在迭代的时候给集合增加或删除元素造成的d.Iterator 和ListIterator的区别    A.Iterator是ListIterator的父接口    B.Iterator是Collection集合的公共的取出容器中元素的方式,对于List,Set都通用,ListIterator只能是List的方式    C.ListIterator具备对遍历的元素进行增删改查的方法,不会出现ConcurrentModificationException:并发修改异常e.for 循环遍历和迭代器遍历的区别 A.最主要的区别就是remove方法,想要在循环的过程中删除元素就要用迭代器,因为迭代器的remove方法不仅会删除元素,还会维护一个标志,用了记录当前状态是不是可删除。而for循环脚标是变化的,删除元素会报错,因为list.size()大小发生变化了     B.ArrayList里面维护的是数组,顺序结构,所以用get方法获取比较快,因而用for循环         LinkedList里面维护的是链表,链式结构,Iterator中的next()方法,采用的即是顺序访问的方法,因此用迭代器比较快

5.增强for

a.格式:    for(对象的类型  变量名 : 对象名)    {        直接使用变量    }b.好处:方便数组和集合的遍历c.注意事项:增强for是用来代替Iterator的,不要在遍历的时候对集合进行修改

6.集合遍历的方式

a.增强forb.迭代器c.List 中可以用普通for ,通过get()方法

7.泛型

a.概念:泛型是一种把明确数据类型的工作放在创建对象或调用方法的时候才明确的特殊的类型b.好处:    解决了黄线警告的问题    将系统运行期间的问题提前到了编译期    优化了程序设计,不用强制转换了c.不足:泛型传入的只能是引用数据类型d.在类上定义 : public class Student<T>{}e.在方法上定义: public <T> void method(T s){}f.在接口上定义:public class Student implements Person<T>{}g.在类上定义两个泛型: public class MyArrayList<T, S >h.泛型的使用:可以在继承关系,实现关系,创建对象时使用j.泛型高级通配符?  /  ? extends E  /  ? super E

8.Collection和Collections的区别

a.Collection是Collection集合的顶层接口,定义了Collection集合的共性方法b.collections是一个类,定义了针对Collection集合操作的功能.有排序,查找,反转等

9.针对Collection集合我们到底使用谁

唯一吗?    是:Set        排序吗?            是:TreeSet            否:HashSet    如果你知道是Set,但是不知道是哪个Set,就用HashSet。    否:List        要安全吗?            是:Vector            否:ArrayList或者LinkedList                查询多:ArrayList                增删多:LinkedList    如果你知道是List,但是不知道是哪个List,就用ArrayList。有对应关系 ,用Map如果你知道是Collection集合,但是不知道使用谁,就用ArrayList。如果你知道用集合,就用ArrayList。   

10.TreeSet排序的两种实现方式

A:自然排序(元素具备比较性)  TreeSet的无参构造,要求对象所属的类实现Comparable接口。           B:比较器排序(集合具备比较性)TreeSet的带参构造,要求构造方法接收一个实现了Comparator接口的对象。

11.Map和Collection的区别?

    A:Map 存储的是键值对形式的元素,键唯一,值可以重复。夫妻对    B:Collection 存储的是单独出现的元素,子接口Set元素唯一,子接口List元素可重复

二.集合各类和接口中常用方法
1.Collection中常用的方法

a.boolean add(obj)  向集合中添加元素b.boolean remove(obj)   删除集合中的指定元素c.boolean isEmpty() 判断集合是否为空d.boolean contains(obj) 判断集合中是否存在指定元素e.int size()    获取集合中元素的个数f.Iterator iterator()   遍历

2.List中常用的成员方法

a.void add(int index,obj )  在指定位置添加元素b.Object remove(int index)  删除指定位置的元素c.Object set (int index,obj)    把指定位置的元素改为指定的值,返回之前的值d.Object get(int index) 获取集合中指定位置的元素e.int indexOf(obj)  返回指定元素在集合中第一次出现的索引f.ListIterator listIterator()   列表迭代器g.List subList(int fromIndex,int toIndex)   截取集合

3.Vector类

a.void addElement(obj)  添加b.Object elementAt(int index)   获取元素c.Enumeration elements()    获取所有元素d.int size()   获取集合中元素的个数

4.LinkedList类

a.void addFirst(Object o) 在第一个索引位置添加b.void addLast(Object o)c.Objcet getFirst() 获取第一个索引位置的元素d.Objcet getLast()e.Object removeFirst()  删除第一个索引位置的元素f.Object removeLast()

5.Collections类

a.void sort(List list)  排序b.binarySearch(List list,obj)   二分查找c.reverse   反转d.max(Collection c)     最大值e.shuffer(List list )   随机置换
0 0
原创粉丝点击