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栈和队列

栈:

  栈是一个线性表结构,只有一个出入口,从同一个口存放数据和移出数据  特点:先入后出

队列:

  队列也是一个线性表,队列有两个开口,从一边存入数据,从另一边取出数据  特点:先入先出

 数组:数组是在内存中开辟的一块连续的内存空间   特点:增删慢,查询快

 

链表:链表在内存中时不连续的内存空间,数据结构有单向链表和双向链表,先说单向链表,单向链表的意思就是前一个节点记录后一个节点的位置。特点:增删快,查询慢

 

posted @ 2020-10-14 21:15  springcode  阅读(129)  评论(0编辑  收藏  举报