JAVA 集合 List

来源:互联网 发布:魔兽60年代数据库 编辑:程序博客网 时间:2024/06/14 01:07

一、测试List中特有的方法

  1. add(int index, E element) 向指定索引添加元素(不能越界)
  2. get(int index) 获取指定下标对应的元素
  3. set(int index, E element) 替换指定索引的元素(不能越界)
  4. remove(int index) 按索引 来 删除 指定位置的元素
public static void fun1(){    List list = new ArrayList();    list.add("a");    list.add("b");    list.add("c");    list.add("d");    //  向指定索引添加元素add(int index,E element)    list.add(4,"w");    //  替换指定索引的元素(不能越界)    list.get(1);    //  利用get 方法 遍历集合    for(int i = 0; i < list.size();i++){    System.out.println(list.get(i);                 //  打印集合list 所有的元素}    //  替换指定索引的元素(不能越界 不能替换 超出集合长度的索引)    list.set(1,"LL");    //  按照索引 来 删除指定的位置元素    list.remove(1);}

二、Vector

枚举public static void fun2(){    //  数组实现的  被ArrayList 代替了    Vector vector = new Vector();    vector.addElement("a");    vector.addElement("b");    vector.addElement("c");    vector.addElement("d");    System.out.println(vector);    //  遍历 (特有方法)    //  快速枚举遍历    Enumeration elements = vector.elements();    while(elements.hasMoreElements()){    //  获取下一个元素    Object object = (Object) elements.nextElement();    System.out.println(object);    }}

三、练习 要求:去除重复元素

//  需求:在集合中存储“a”,“a”,“a”,“b”,“b”,“b”,“c”,“c”,“c”//  要求: 去除重复元素 public static void fun4(){    ArrayList arrayList = new ArrayList();    arrayList.add("a");    arrayList.add("a");    arrayList.add("a");    arrayList.add("b");    arrayList.add("b");    arrayList.add("b");    arrayList.add("c");    arrayList.add("c");    arrayList.add("c");    //  创建一个新的集合    ArrayList arrayList2 = new ArrayList();    //  获取迭代器    Iterator iterator = arrayList.iteratpr();    //  遍历集合    while(iterator.hasNext()){    //  取出每一个元素    Object next = iteartor.next();    //  判断新的集合中  包含不包含这个元素    //  不包含就 添加进去    if(!arrayList2.contains(next)){    arrayList2.add(next);}    }    System.out.println("arrayList2");           //  打印结果abc}

三、LinkedList 模拟栈的出栈 和 入栈
什么是栈 和 什么是队列

栈结构: 先入后出(main 函数最先入栈 最后弹栈)
队列结构:先入先出(排队买早点 买完就走)

//  入栈相当于添加   //  出栈相当于删除linkedList linkedList = new LinkedList();//  模拟入栈 添加元素linkedList.addLast("a");linkedList.addLast("b");linkedList.addLast("c");linkedList.addLast("d");//  模拟出栈  删除//  判断集合中 是不是空的集合while(!linkedList.isEmpty()){    //  从最后一个开始删除  打印被删除的元素    System.out.println(linkedList.removeLast());    //  打印出a , b , c, d}

数组的特点: 查询快 增删慢
查询 : 依赖 下标查询
增删 : 要把插入的位置后面的所有元素 向后移动一位(删除时,向前移动一位)
数组在创建时候,默认有10个位置,当要保存11个值的时候,系统会创建一个新的数组,长度为原来的1.5倍。
链表的特点:查询慢,增删快
1. 链表中的元素 保存了上一个元素 和 下一个元素的地址,通过这个地址可以找到上一个元素 和 下一个元素
2. 在进行查找的时候,先判断出要查找的元素 ,距离头近 还是尾近。
3. 例如头近 就从头位置 一个一个向下 查找(通过保存的地址)
4. 增删时: 直接找到插入的位置 重新保存上一个元素 和 下一个元素的地址,后面的元素的位置都不进行移动过。
什么时候使用ArrayList 和 LinkedList
功能是 查询多(ArrayList) 增删多(LinkedList)

public static void fun5(){    LinkedList linkedList = new LinkedList();    linkedList.add("a");    linkedList.add("b");    linkedList.add("c");    linkedList.add("d");    //  d a b c d e    linkedList.addFirst"d";    linkedList.addFirst"e";    System.out.println(linkedList.getFirst());  //  打印第一位a    System.out.println(linkedList.getFirst());  //  打印最后一位    System.out.println(linkedList.get1));     //  打印下标为1的元素}
原创粉丝点击