集合:Java中提供的一种容器,可以用来存储多个数据。
集合和数组的区别
1.数组长度不可变、固定值,集合长度是可变的。
2.
集合分为两大类
Collection:它是单列集合的根接口,用于粗出一些列符合某种规则的元素,它有两个重要的子接口,
分别是 java.util.List 和 java.util.Set。其中,List接口集合特点元素有序,元素可重复,含有索引。
Set接口集合特点:元素不重复,没有索引。
List接口的主要实现类有:java.util.ArrayList 和 java.util.LinkedList,
Set接口的主要实现类有:java.util.HashSet 和 java.util.TreeSet。
Collection集合常用功能
是所有单列集合的父接口,定义了所有单列集合的API方法,这些方法适用于所有单列集合。增删改查功能
public boolean add(E e):把给定的对象添加到当前集合中
public void clear():清空几个当中所有的元素。
public boolean remove(E e):当前集合中干掉
public boolean contains(E e):判断当前集合当中是否包含给定的对象元素
public boolean isEmpty():当前集合是否为空。
public int size():获取当前元素的个数
public Object[] toArray():把当前集合中的元素,存储到一个数组当中
迭代器iterator
遍历集合中所有元素,JDK官方提供了一个接口java.util.Iterator
Iterator接口也是集合当中的一员,但是与Map、Collection接口不同,Collection接口和Map接口主要是用来存储元素的,而Iterator主要用于迭代访问Collection
与Map接口中的元素。因此称为迭代器
public Iterator iterator():获取集合对应的迭代器,用来遍历集合当中的元素
Collection<String> all =new ArrayList<>(); all.add("我"); all.add("的"); Iterator<String> it=all.iterator(); String next = it.next(); System.out.println(next);
迭代概念:在每次取元素之前首先判断集合当中有没有元素,如果有就把这个元素取出来,再继续判断,如果还有就再一次取出来,一直把集合当中的所有元素全部取出来。
专业术语称为迭代
常用API方法
public E next():获取迭代的下一个元素
public boolean hasNext():如果集合当中仍有元素可以迭代,则返回true
for
for(元素的数据类型 变量名 : Collection集合或者数组){ //操作代码 }
int[] arr={3,5,7,9,12}; for(int b:arr){ System.out.print(b+" "); } Collection<String> coll=new ArrayList<>(); coll.add("姚明"); coll.add("科比"); coll.add("乔丹"); coll.add("詹姆斯"); coll.add("加索尔"); coll.add("库里"); for(String a:coll){ System.out.print(a+" "); }
主要用于遍历集合或者数组,在遍历过程中,一定不要进行增删操作
简化迭代器
泛型:可以在类或者方法中预知的使用未知的数据类型
一般在创建对象的时候,将未知的数据类型确定为具体
使用泛型的好处
-
避免了类型转换的麻烦,存储的是什么样的数据类型,取出的就是什么样的数据类型
-
把运行期异常(代码运行之后会抛出的异常)提升到编译期阶段(写代码的时候就会报错)
备注:泛型它其实也是数据类型的一部分,一般我们将类名和泛型合并一起看做数据类型。
泛型的定义与使用
泛型,用来灵活的将数据类型应用到不同的类、方法、接口当中。将数据类型作为参数进行传递。
因为我们的集合框架体系中,大量的使用了泛型。
修饰符 class 类名<代表泛型的变量> { } public class ArrayList<E> { public boolean add(E e){} public E get(int index){} //.... }