集合的作用:集合是一个容器,可以存储同种类型的多个数据
集合的特点:集合的长度是可变的,只能存储引用数据类型,不能存储基本数据类型,可以存基本数据类型的包装类

Collection常用方法
add:添加 clear:清空 remove:删除某个 contains:是否包含 isEmpty:判断集合是否为空
toArray 将集合装成Object[]类型
2.1迭代器的作用
帮助Collection集合遍历元素的。用迭代器遍历集合要先获取迭代器的对象
快捷键:itit
 Collection<String> coll = new ArrayList<>();
        获取迭代器对象
    Iterator<String> it=coll.iterator();
    
    迭代器的方法有  
    next() 获取集合中的元素
    hasNext() 判断集合中有没有下一个元素
    remove()删除当前元素
    while(it.hasNext()){
          String s=it.next()
    }    
迭代器原理

lastRet是下标
使用迭代器遍历集合会出现并发修改异常,是因为在遍历集合的时候,进行了增删的操作,目前新增无解决办法,删除使用迭代器删除,就可以避免迭代器异常
 //使用循环获取每一个元素
        while(it.hasNext()){
            String s = it.next();
            if(s.equals("柳岩")){
                //使用迭代器对象删除当前元素
                it.remove();
            }
        }
增强for循环也是可以遍历collection集合和数组
快捷键:iter
格式
for(元素的类型 元素名 : 集合/数组){
    
} 
好处是简单快捷,缺点是底层也是迭代器,也会出现并发修改异常,而且不能使用索引
规定了要存储的类型,取出来也方便使用,给集合加上泛型,一看就知道里面的数据是什么类型
当使用未定义的泛型的时候,只有在调用的时候确定类型 格式:<大写字母>
比如类上定义泛型格式
//泛型代表的是某一种引用数据类型
public class MyArrayList<T> {
    
}
在每次创建对象时确定具体的类型
  //创建对象
        MyArrayList<String> list = new MyArrayList<>();
        //泛型确定为了字符串类型  
比如方法上定义泛型格式
在每次调用方法时确定具体类型
public class AAA {
    //方法上定义泛型
    public <T> void method(T t){
    }
}
 //创建对象
        AAA a = new AAA();
        //调用方法泛型确定为字符串
        a.method("abc");
        //调用方法泛型确定为整数
        a.method(123);
接口上定义泛型
//泛型代表某种引用数据类型
//泛型的定义是在<>写一个大写字母
public interface MyColl<T> {
    void method(T t);
}
- 在定义子类时确定泛型具体的类型
public class MyAAA implements MyColl<String>{
    //在子类中确定了泛型的具体类型
    @Override
    public void method(String s) {
    }
}
- 在子类上不确定具体类型,就把接口的泛型变成类上的泛型
public class MyBBB<T> implements MyColl<T> {
    //重写父类抽象方法
    @Override
    public void method(T t) {
    }
}
然后在创建对象的时候,确定泛型的类型
  MyBBB<String> mb = new MyBBB<>();
        mb.method("123");
<?> :可以传递任何的泛型类型
<? extends XXX>	:可以传递XXX以及XXX的子类类型
<? super XXX>	:可以传递XXX以及XXX的父类类型
栈:
  栈是一个线性表结构,只有一个出入口,从同一个口存放数据和移出数据  特点:先入后出
队列:
  队列也是一个线性表,队列有两个开口,从一边存入数据,从另一边取出数据  特点:先入先出
数组:数组是在内存中开辟的一块连续的内存空间 特点:增删慢,查询快
 
 
链表:链表在内存中时不连续的内存空间,数据结构有单向链表和双向链表,先说单向链表,单向链表的意思就是前一个节点记录后一个节点的位置。特点:增删快,查询慢

原文:https://www.cnblogs.com/gushiye/p/13817424.html