LinkedList

*LinkedList*

*存储结构双向链表*

*练习代码*

package com.practise;

import java.util.Iterator;
import java.util.LinkedList;
import java.util.ListIterator;

/**
* LinkedList
* 存储结构:双向链表
* 链表结构实现,增删改快,查询慢
* 主要的方法和ArrayList基本上是通用的
*/
public class LinkedListDemo01 {
   public static void main(String[] args) {
       LinkedList linkedList = new LinkedList();
       Student stu1 = new Student("张三", 18);
       Student stu2 = new Student("李四", 19);
       Student stu3 = new Student("王五", 20);
       linkedList.add(stu1);
       linkedList.add(stu2);
       linkedList.add(stu3);
     // linkedList.add(stu3);//可以添加重复的元素
       System.out.println("集合大小===="+linkedList.size());
       System.out.println("集合遍历===="+linkedList);//默认重写的toString方法
       //2.删除元素
//       linkedList.remove(stu1);//这种方法是能删除集合中的元素的
//       System.out.println("删除之后集合大小===="+linkedList.size());
//       System.out.println("删除之后集合遍历===="+linkedList);//默认重写的toString方法
       //通过下标进行删除
//       linkedList.remove(0);
//       System.out.println("删除之后集合大小===="+linkedList.size());
//       System.out.println("删除之后集合遍历===="+linkedList);//默认重写的toString方法
       System.out.println("=========3.1使用增强for==========");
       for (Object o : linkedList) {
           Student col1=(Student) o;
           System.out.println(col1);
      }
       //迭代器是专门用来遍历集合的一种方式
       System.out.println("=========3.2使用iterator迭代器==========");
       Iterator iterator = linkedList.iterator();
       while (iterator.hasNext()){
           Student col2 = (Student)iterator.next();
           System.out.println(col2);
           //java.util.ConcurrentModificationException 并发修改异常,也就是说,再遍历集合的时候,是不能够删除集合中的元素的。
           //linkedList.remove(col2);
           //要想在遍历的时候删除集合中的元素可以使用迭代器提供的删除方法进行删除
//           iterator.remove();
      }
       System.out.println("集合大小===="+linkedList.size());
       System.out.println("=========3.3使用普通for循环进行遍历==========");
       for (int i = 0; i <linkedList.size() ; i++) {
           System.out.println(( linkedList).get(i));
      }
       //使用列表迭代器,和iterator的区别,listiterator可以向前或者向后遍历,添加、删除、修改元素。
       System.out.println("=========3.4使用列表迭代器从前往后遍历==========");
       ListIterator listIterator = linkedList.listIterator();
       while (listIterator.hasNext()) {
           System.out.println(listIterator.nextIndex()+":"+listIterator.next());
      }
       System.out.println("=========3.4使用列表迭代器从后往前遍历==========");
       while (listIterator.hasPrevious()) {
           System.out.println(listIterator.previousIndex()+":"+listIterator.previous());
      }
       //3.5 判断
       System.out.println(linkedList.contains(stu2));
       System.out.println(linkedList.isEmpty());
       //3.6 获取元素在集合中的位置
       System.out.println(linkedList.indexOf(stu2));
       System.out.println(linkedList.indexOf(stu1));
  }
}
运行结果:
集合大小====3
集合遍历====[Student{name='张三', age=18}, Student{name='李四', age=19}, Student{name='王五', age=20}]
=========3.1使用增强for==========
Student{name='张三', age=18}
Student{name='李四', age=19}
Student{name='王五', age=20}
=========3.2使用iterator迭代器==========
Student{name='张三', age=18}
Student{name='李四', age=19}
Student{name='王五', age=20}
集合大小====3
=========3.3使用普通for循环进行遍历==========
Student{name='张三', age=18}
Student{name='李四', age=19}
Student{name='王五', age=20}
=========3.4使用列表迭代器从前往后遍历==========
0:Student{name='张三', age=18}
1:Student{name='李四', age=19}
2:Student{name='王五', age=20}
=========3.4使用列表迭代器从后往前遍历==========
2:Student{name='王五', age=20}
1:Student{name='李四', age=19}
0:Student{name='张三', age=18}
true
false
1
0

 

*不同结构实现方式:*

 

 

posted on 2021-01-30 14:33  ~码铃薯~  阅读(88)  评论(0编辑  收藏  举报

导航