java回顾之单列集合、泛型、数据结构
java回顾之单列集合、泛型、数据结构
一、collection
1.1集合概述
集合的作用:集合是一个容器,可以存储同种类型的多个数据
集合的特点:集合的长度是可变的,只能存储引用数据类型,不能存储基本数据类型,可以存基本数据类型的包装类

Collection常用方法
add:添加 clear:清空 remove:删除某个 contains:是否包含 isEmpty:判断集合是否为空
toArray 将集合装成Object[]类型
二、Iterator迭代器
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();
}
}
2.2、增强for循环
增强for循环也是可以遍历collection集合和数组
快捷键:iter
格式
for(元素的类型 元素名 : 集合/数组){
}
好处是简单快捷,缺点是底层也是迭代器,也会出现并发修改异常,而且不能使用索引
3、泛型
3.1泛型的作用
规定了要存储的类型,取出来也方便使用,给集合加上泛型,一看就知道里面的数据是什么类型
当使用未定义的泛型的时候,只有在调用的时候确定类型 格式:<大写字母>
比如类上定义泛型格式
//泛型代表的是某一种引用数据类型
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");
3.2 泛型通配符
<?> :可以传递任何的泛型类型
<? extends XXX> :可以传递XXX以及XXX的子类类型
<? super XXX> :可以传递XXX以及XXX的父类类型
4、数据结构
4.1栈和队列
栈:
栈是一个线性表结构,只有一个出入口,从同一个口存放数据和移出数据 特点:先入后出
队列:
队列也是一个线性表,队列有两个开口,从一边存入数据,从另一边取出数据 特点:先入先出
数组:数组是在内存中开辟的一块连续的内存空间 特点:增删慢,查询快
链表:链表在内存中时不连续的内存空间,数据结构有单向链表和双向链表,先说单向链表,单向链表的意思就是前一个节点记录后一个节点的位置。特点:增删快,查询慢


浙公网安备 33010602011771号