java基础day14

Day14
一、集合
  • 数组的缺点:只要创建出来就固定长度,所以扩展性差==>使用集合来解决
  • 数组与集合的关系:
    1.相同点:(1)数组与集合都是用来存数据,都可以通过索引来获取数据;(2)数组与集合都是采用数组的方法来进行存储的
    2.不同点:(1)数组可以存基本数据类型,也可以存引用数据类型;(2)集合只能存储引用数据类型;(3)数组的长度是固定的,集合的长度是可变的;
  • 集合的框架:
    1.单列集合:每一个存储的数据都是独立的(Collection)
    2.List是Collection的直接子类,它是有序,有索引,可以存储重复的数据;Set也是Collection的直接子类,它是无序,不可以使用普通的for循环
    3.ArrayList(增、删、改的速度慢,查询的速度快),LinkedList(增、删、改的速度快,查询的速度慢),Vector(线程安全);这三个都是List的实现子类,主要的new对象的类
  • 集合:集合也是一个容器,用于存数据
二、Collection(Collection是层次结构中的根接口,索引也是从0开始)

1、常规的方法:
boolean add(E e):添加数据,返回值是bealoon,添加成功返回true;
boolean contains(Object o):判断是否有此元素,如果存在返回true,否则false;
boolean isEmpty():判断集合里是否有元素;
boolean remove(Object o):根据集合里的元素进行删除;
int size():获取集合的长度;
Object[] toArray():把集合转换成数组;
void clear():清空数组里的所有的元素;
iterator():把集合转换成迭代器的方法;
2、所有带All的方法:
addAll(Collection<? extends E> c):把小集合添加到大集合里;例如:co.addAll©;把集合c的所有数据添加到co;
boolean containsAll(Collection<?> c):如果此collection 包含指定collection中的所有元素,则返回 true;
removeAll(Collection<?> c):如果存在交集返回true , 剩下的是没有交集的数据;
retainAll(Collection<?> c):判断是否发生改变,如果发生改变返回true,不发生改变返回false,剩下的数据是交集的结果;

遍历集合:  
package com.yxlim.day14;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/**
 * @author 小Lim
 * News类的属性:(重写toString方法)
 *     private int id;
 *     private String title;
 *     private String content;
 *     private String dateTime;
 */
public class Test1 {
    public static void main(String[] args) {
        Collection col=new ArrayList();
        col.add(new News(1,"香港你好","我爱中国","2019/8/16"));
        col.add(new News(2,"保卫香港","撑阿sir","2019/8/16"));
        //增强for循环
        for(Object obj:col){
            News ne=(News)obj;
            System.out.println(ne);
        }
        //迭代器
        Iterator it=col.iterator();
        while (it.hasNext()){
            News ne=(News)it.next();
            System.out.println(ne);
        }
        //普通for循环
        for(int i=0;i<col.size();i++){
            News ne=(News)((ArrayList) col).get(i);
            System.out.println(ne);
        }
    }
}

三、Iterator和ListIterator接口(集合类有public Iterator iterator()方法将对象转为迭代器)

1、Iterator常规的方法:
hasNext():判断是否有下一个元素,如果有返回true;
next():获取到下一个元素;
remove():移除迭代器的某一个元素;

遍历语法:while(迭代器.hasNext()){ 迭代器.next() //获取元素 }    
  • 把一个集合转换成迭代器
  • 获取值的时候,不要通过next()方法获取具体的值,要先获取对象,通过对象来获取值

2、迭代器遍历出错:java.util.ConcurrentModificationException(对象的并发修改)
3、ListIterator:这个迭代器是针对list集合而存在,它的父类也是Iterator,它能解决迭代器遍历出现问题

ListIterator增加了void add(E e)、void set(E e)方法,解决了迭代器内对象并发修改时出错问题  
四、List(java.util里的一个接口)

1、List集合常规独有的方法:
public void add(int index, E element):根据索引的位置来进行添加;
E get(int index):根据索引来获取其值;
E remove(int index):根据索引来进行删除;
E set(int index, E element):也是替换(前提element已经存在);

五、ArrayList类(直接实现List接口,最常用的集合或容器)

1、构造方法:跟StringBuffer的类似
2、常规方法:
add():添加(默认也是向末尾添加数据);
get(index):获取(根据索引来获取,最常用的);

六、LinkedList类(也是List的一个实现类,不常用)
  • 常规方法:
    public void addFirst(E e):插入数据到集合的首部;
    public void addLast(E e):插入数据到集合末尾(注意点:比add插入数据的效率要高);
    public E getFirst():拿到集合的第一个元素;
    public E getLast():获取最后一个数据;
    public E removeLast():移除最后一个元素;
    public E removeLast():移除第一个元素;
七、Vector类(线程安全)
  • 构造方法与ArrayList是一样的
  • 常规独有的方法:
    public void addElement(E obj):向末尾添加数据;
    public E elementAt(int index):根据索引来获取;
    public boolean removeElement(Object obj);删除集合里的对象;
Element都是根据节点来进行操作  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值