day16(LinkedList)

一.LinkedList(双向链表)

1.特有功能

* public void addFirst(E e)及addLast(E e) 
* public E getFirst()及getLast()
* public E removeFirst()及public E removeLast()
* public E get(int index);

2.栈和队列数据结构

  • 栈:先进后出
  • 队列:先进先出
//用LinkedList模拟栈数据结构的集合
public class Stack {
                private LinkedList list = new LinkedList(); //创建LinkedList对象

                public void in(Object obj) {
                    list.addLast(obj);      //封装addLast()方法
                }

                public Object out() {
                    return list.removeLast();   //封装removeLast()方法
                }

                public boolean isEmpty() {
                    return list.isEmpty();      //封装isEmpty()方法
                }
}

注意:涉及索引操作会遍历数据。

二.泛型

1.泛型概述和基本使用

  • a.概述

    *泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。
    
  • b.泛型好处

    *提高安全性(将运行期的错误转换到编译期) 
    *省去强转的麻烦
    
  • c.泛型基本使用

    <>中放的必须是引用数据类型 
    
  • d.泛型使用注意事项

    前后的泛型必须一致,或者后面的泛型可以省略不写(1.7的新特性菱形泛型) 
    

2.泛型的由来

* 通过Object转型问题引入
* 早期的Object类型可以接收任意的对象类型,但是在实际的使用中,会有类型转换的问题。也就存在这隐患,所以Java提供了泛型来解决这个安全问题。

三.增强for的概述和使用

1.概述

*简化数组和Collection集合的遍历

2.格式:

*for(元素数据类型 变量 : 数组或者Collection集合) {
        使用变量即可,该变量就是元素
    }

3.好处

*简化遍历

4.坏处

* 丢掉了索引信息。 
public class Foreach_test {
    public static void main(String[] args) {
        int[][] arr = {{1,2},{3,4}};
        List<Object> list = new ArrayList<>();
        list.add(1);
        list.add("abcd");
        list.add(45);
        list.add(34);
        //遍历集合
        for(Object object : list){
            System.out.println(object);
        }
        //遍历数组
        for(int[] i : arr){
            for(int j : i){
                System.out.println(j);
            }   
        }
    }
}

5.三种迭代的能否删除

* 普通for循环,可以删除,但是索引要--
* 迭代器,可以删除,但是必须使用迭代器自身(比如ListIterator)的remove方法,否则会出现并发修改异常
* 增强for循环不能删除

四.可变参数的概述和使用

1.可变参数概述

*定义方法的时候不知道该定义多少个参数

2.格式

*修饰符 返回值类型 方法名(数据类型…  变量名){}
public int getSum(int... a)

3.注意事项:

* 这里的变量其实是一个数组
* 如果一个方法有可变参数,并且有多个参数,那么,可变参数肯定是最后一个
public class Variable_test {
    public static void main(String[] args) {
        int sum1 = getSum(33,5);
        System.out.println(sum1);
        int sum2 = getSum(45,23,78,3);
        System.out.println(sum2);
    }

    public static int getSum(int... arr){
        int sum = 0;
        for (int i : arr) {
            sum += i;
        }
        return sum;
    }
}

五.Arrays工具类的asList()方法

*Arrays工具类的asList()方法的使用
*Collection中toArray(T[] a)泛型版的集合转数组
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值