集合框架-day11

138 阅读3分钟

day11-集合框架 LinkedList,泛型的概述

1 LinkedList的特有功能

import java.util.LinkedList;
/*
* public void addFirst(E e)及addLast(E e) 从首添加及从尾添加
* public E getFirst()及getLast() 得到首及得到尾
* public E removeFirst()及public E removeLast() 删除首及删除尾
* public E get(int index); 得到指定索引位置对象
*/
class DemoLinkedList {
    public static void main(String[] args) {
        LinkedList list=new LinkedList();
        list.addFirst("a");  //a
        list.addFirst("b");  //ba
        list.addFirst("c");  //cba
        list.addFirst("d");  //dcba
        System.out.println(list);
        list.addLast("e");   //dcbae
        list.addLast("f");   //dcbaef
        System.out.println(list);
        System.out.println(list.getFirst()); //d 得到首
        System.out.println(list.getLast());  //f 得到尾
        System.out.println(list);   //getFirst和getLast不改变list对象
        System.out.println(list.removeFirst()); //此list.removeFirst()结果为d,但已经将list中首删除
        System.out.println(list.removeLast());  //此list.removeLast()结果为f,但已经将list中尾删除
        System.out.println(list); //此时的首尾已经被删除,剩下[c, b, a, e]
        System.out.println(list.get(1));  //获取索引1的对象 b
        System.out.println(list.get(3));  //获取索引3的对象 e
        System.out.println(list.get(4));  //超出索引,会报错
    }
}

2 泛型概述

  • 1 泛型基本使用
    • <>中放的必须是引用数据类型
  • 2 泛型使用注意事项
    • 前后的泛型必须一致,或者后面的泛型可以省略不写(1.7的新特性菱形泛型)
  • 3 泛型类
    • 泛型类概述
  • 4 泛型方法
    • public <泛型类型> 返回类型 方法名(泛型类型 变量名)
  • 5 泛型接口
    • public interface 接口名<泛型类型>
  • 6 泛型高级之通配符
    • 泛型通配符<?>,表示任意类型
    • ? extends E
      • 向下限定,E及其子类

3 增强for循环的概述

/*
* 格式:
    *  for(元素数据类型 变量 : 数组或者Collection集合) {
           使用变量即可,该变量就是元素
       }
*/
import java.util.ArrayList;
class DemoBigFor {
    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<String>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        for(String s:list) {   //增强for循环
            System.out.println(s);
        }
    }
}
/*
运行结果:
a
b
c
d
*/

4 三种迭代的能否删除(要求写代码)

  • 1 普通for循环,可以删除,但是索引要i--,因为it.next自动索引后移
  • 2 迭代器,可以删除,但是必须使用迭代器自身的remove方法,否则会出现并发修改异常
  • 3 增强for循环不能删除

5 可变参数的概述和使用

/*
* 格式:
    * 修饰符 返回值类型 方法名(数据类型…  变量名){}
* 注意事项:
    * 这里的变量其实是一个数组
    * 如果一个方法有可变参数,并且有多个参数,那么,可变参数肯定是最后一个
*/
class Changeargs {
    public static void main(String[] args) {
        //int[] arr={1,2,3,4,5};
        change c=new change();
        //c.show(arr);  第一种方法

        c.show(1,2,3,4,5); //第二种方法,两种方法都可以,因为有可变数组,
        //所以show方法里可以直接写1,2,3,4,5,可变数组可以辨别
    }
}
class change {
    public void show(int x,int ... arr) {  //可变数组
    /*
    如果一个方法有可变参数,并且有多个参数,那么,可变参数肯定是最后一个
    这里的1被分配给了int x,而2,3,4,5才分配给arr
    */
    
        for(int i:arr) {             //增强for循环
            System.out.println(i);
        }
    }
}
/*
运行结果;
2
3
4
5
*/

6 Arrays工具类的asList()方法的使用(要求写代码)

7 集合嵌套之ArrayList嵌套ArrayList(要求写代码)