Collection集合,迭代器,增强for,泛型

Collection集合
什么是集合?
集合就是一个容器,可以存储多个元素
为什么要用集合?
之前我们学习过很多的容器,比如变量,数组,StringBuilder,有这么多的容器,为什么还要使用集合呢?
因为变量只能存储一个数据,不能存储多个
因为数组有个弊端,一旦初始化长度就固定了
因为StringBuilder虽然可以存储任意的数据,但是存储进去之后都拼接成字符串了,取用不方便呀
所以咱们出现了一个非常重要而且常用的工具,就是集合!

集合的特点:
1.集合是一个容器,可以存储多个元素
如果没有加泛型,一个集合中可以存储不同类型的数据
如果加了泛型,一个集合只能存储泛型规定呢同一类型的数据,推荐加泛型
2.集合的的长度可以改变
3.集合只能存储引用数据类型的数据,不能存储基本数据类型 数据
由于我们有了自动转箱,其实如果直接存储基本数据类型也是可以的,只不过是先将基本数据类型的数据转为了引用数据类型的数据,其实最终存储的还是只能引用数据类型的数据
4.集合有些有索引,有些没有索引
面试题
数据和集合的区别?
1.数组长度固定,集合长度可变
2.数组可以存储任意类型的数据,集合只能存储引用数据类型的数据.

`集合体系的由来
集合不是一个类,而是一系列的类,集合就是我们现实世界的容器一样,现实世界的容器根据作用,特点,容量等
不用可以分为不通用的容器,Java中的集合也是类型的情况,根据集合的特点获取作用不用也分为很多的集合.不同集合
有一些不同的特点,但是还会有很多相同的特点,条相同的东西我们就可以不断向上抽去除福来(接口),最终就形成了
集合的继承体系(集合的体系.)
集合的体系
Collection(单列集合)
|-ArrayList
|-Vector
|-LinkedList
|-Set:存取无序,无索引,不能存储重复元素
|-HashSet
|-LinkedHashSet
|-TreeSet
Map(双列集合):
学习的时候从上往下
因为最上面的父类(接口)定义最共性的内容,学习了共性那么下面所有的具体实现类共性操作我们都学会了
学会了共性之后,在去针对某个具体的集合去学习它特性(非共性)的内容,那么所以的集合我们都能轻松搞定

使用的时候从小往上
    使用的时候是使用具体的实现类的功能上面的共性的类(接口)都是抽象的方法

Colletion
共性的常用方法

boolean add(E e):添加元素,添加成功返回true,添加失败返回false

void clear():清空集合(删除集合中的所有元素)
bolean remove(Object o ):删除集合中的指定元素

int size():返回集合中的元素的个数
Iteratoriterato()
判断方法
boolean coontains(Object o ):判断集合阿忠是否包含该元素
boolean isEmpty():判断集合中是否有元素
面试题:
以下方法不属于Collection接口的是(BD)
A.remove(Object o )
B.get(int index)
C.clear()
D.remove(int index)
迭代器
一个取出集合元素(遍历)的工具
Iterator即可
boolean hasNext():判断集合中是否还有下一个元素
E next():获取集合中下一个袁姗姗
void remove():删除集合中的元素
使用迭代器去获取元素,如果没有元素就会抛出一个异常:NoSuchElementException

步骤:
    1.创建集合
    2.添加元素
    3.迭代器遍历
        a.获取到迭代器对象
        b.在while循环中判断是否有下一个元素
        c.在while循环红获取下一个元素.
//1.创建集合
Collection<String>c = new ArrayList<>();
//2.添加元素
c.add("hello");
c.add("world");
c.add("java");
c.add("php");
//3.迭代器遍历
//a.获取到迭代器对象
Iterato<String>it = c.iterator();
//b.在while循环中判断是否有下一个元素
while(it.hasNext()){
    //c.在while循环中获取下一个元素
    String str = it.next();
    Systemo.out.println(Str);

}
集合的遍历方法
方法一:普通for,结合get(int index)和size()方法[只适用于List体系的集合]
//创建一个集合对像
ArrayListcoll = new ArrayList<>();
////往集合中添加元素
coll.add(“姚明”);
coll.add(“科比”);
coll.add(“麦迪”);
coll.add(“詹姆斯”);
coll.add(“艾弗森”);

for(int i = 0; i<coll.size(); i++){
    System.out.println(coll.get(i));
}
方式二:迭代器(Iterator)[适用于所有的Collection集合]
//1.创建集合
Collection<String>c = new ArrayList<>();
//2.添加元素
c.add("hello");
c.add("world");
c.add("java");
c.add("php");
//3.迭代器遍历
    //a.获取到迭代器对象
oIterato<String>it = c.iterator();
    //b.在while循环中获取下一个元素
    String str = it.next();
    System.out.println(str);
    }

方式三:增强for                                   [适用于所有的Collection集合]
    // (1)创建集合
    Collection<String> c = new ArrayList<>();
    // (2)添加元素
    c.add("hello");
    c.add("world");
    c.add("java");
    c.add("php");

    for(String s:c){
        // s就是其中的每一个元素
        System.out.println(s);
    }

增强for
JDK1.5的新特性,可以遍历数组和Collection集合

格式:
    for(元素类型 元素名:数组或者Collection集合){
        System.out.println(元素名);
    }

增强for的底层,遍历集合使用的是迭代器


JDK1.5的新特性:
    自动拆装箱、增强for、泛型

泛型
JDK1.5的新特性
格式:<类型>
泛型中的类型只能是引用数据类型

泛型可以理解成一种广泛的类型,不写固定的某种类型,你想让他是什么类型就可以是什么类型
泛型中的类型就规定了集合中存存的元素的类型

泛型使用是注意事项
泛型前后必须一致
ArrayList list = new ArrayList(); ×
ArrayList list = new ArrayList(); √
JDK1.7的新特性:菱形泛型.后面可以不加泛型
ArrayListlist = new ArrayList<>();
泛型的好处
1.省去了强转的麻烦,泛型规定了什么类型,取出元素自动就是呢个类型
2.将解决问题的时间提前了,将允许时期可能出现的异常,提前到了编译时期解决

猜你喜欢

转载自blog.csdn.net/qq_42815122/article/details/81772061