0816总结

0816总结

对象数组:类名[] 对象名=new 类名[长度];
数组的缺点:只要创建出来就固定其长度了,所有扩展性差(使用集合来解决)

数组与集合的关系:

相同点:
1、数组与集合都是用来存数据,都可以通过索引来获取数据
2、数组与集合都是采用数组的方法来进行存的
不同点:
1、数组可以存基本数据类型,也可以存引用数据类型;但是集合只能够存引用数据类型
2、数组的长度是固定的,集合的长度是可变的

集合的框架
单列:每一个存的数据的都是独立的

            Collection跟接口
            //           \\
        List              Set
(有序,有索引,可以重复) (无序,不可以使用普通的for循环) 
        //
    ArrayList(重点)
(插入慢,查询快)
    LinedList
(查询慢,插入快)
     Vector 
     线程安全

双列:以键值对存 key values(未讲)

集合

集合也是一个容器,用于存数据

Collection

Collection 层次结构中的根接口索引也是从0开始

常规的方法

添加元素:add(E e)【返回值是bealoon,添加成功返回true】
判断是否有元素:contains(Object o)【存在返回true,否则false】
判断集合里是否含有元素:isEmpty() 【有元素返回false,没有元素返回true】
根据索引素进行删除:remove(Object o)
获取到集合的长度:size()
把集合转换成数组:Object[] toArray()
清空数组里的所有的元素:clear()
把集合转换成迭代器的方法:iterator()
Collection的遍历:

Object[]obj=col.toArray();
for (int i=0;i<obj.length;i++){
    ystem.out.println(obj[i].toString());
}
所有带All的方法

1、把小集合添加到大集合里:

//把集合c的所有数据添加到co
co.addAll(c); 

2、

//如果此 collection 包含指定 collection 中的所有元素,则返回 true
containsAll(Collection<?> c)

3、

//如果存在交集返回值是true ,返回的是没有交集的数据
removeAll(Collection<?> c);

4、

//判断是否发生改变,如果发生改变返回true,不发生改变返回false
col1.retainAll(col)

对集合进行遍历的三种方法

1、for循环

for (int i=0;i<col.size();i++){
    System.out.println(((ArrayList) col).get(i));
}

2、增强for循环

for (Object obj:col){
    Student s=(Student)obj;
    System.out.println(s);
}

3、迭代器

Iterator ite=col.iterator(); //将 cal 转化为迭代器类型
while (ite.hasNext()){
    Student s=(Student) ite.next(); //向下转型,将父类还原成Student类
    System.out.println(s);
}
Iterator

是一个接口,不能够被实例化

常规的方法

判断是否有下一个元素:hasNext()【有则返回true】
获取到下一个元素:next();
移除迭代器的某一个元素:remove();
遍历:使用迭代器

while 循环 (迭代器.hasNext()){
    next()  // 获取其元素
}

1、把一个集合转换成迭代器
2、获取值的时候,不要通过next()方法来获取具体的值,一定要先获取对象,通过对象来获取值

List

导包:java.util;是一个接口
特点:1.有顺序 2.有索引 3.可以重复

常规的方法:

根据索引的位置来进行添加:add(int index, E element)
根据索引来获取其值:get(int index)
根据索引来进行删除:remove(int index)
替换:set(int index, E element)【前提这个已经存在】
总结:这个方法都是根据索引来进行操作的
迭代器遍历报错:对象的并发修改(java.util.ConcurrentModificationException)

ListIterator 这个迭代器是针对 list 集合而存在,它的父类也是Iterator

ArrayList

1.有顺序 2.有索引 3.可以重复 4.线程不安全
5.以数组的方式来存数据;特点 :查询快;增加删除修改慢 (最常用的)

构造方法:跟StringBuffer 的有点类似

常规的方法

添加:add()【默认也是向末尾添加数据】
获取:get(index) 【根据索引来获取】

LinkedList

是以链表式来进行存;特点:增加、删除、修改速度快,效率高;查询速度慢
也是list的实现类(不常用)
有两个构造,一般使用空的构造

常规的方法

插入数据到集合的头部:addFirst(E e)
插入数据到集合的尾部:addLast(E e) 【比平常插入效率高】
获取第一个元素:getFirst()
获取最后一个元素:getLast()
移除第一个元素:removeFirst()
移除最后一个元素:removeLast()

Vector

已经被ArrayList替换,也是以数组的方式来进行存,构造方法与 ArrayList 是一样的

独有的方法

向末尾来添加数据:addElement(E obj)
根据索引来获取:elementAt(int index)
删除集合里的对象:removeElement(Object obj)
Element:都是根据节点来进行操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值