LinkedList类

集合的体系:
----------| Collection  单列集合的根接口
----------------| List 如果实现了List接口的集合类,具备的特点: 有序,可重复。
--------------------| ArrayList   ArrayList 底层是维护了一个Object数组实现 的, 特点: 查询速度快,增删慢。
什么时候使用ArrayList: 如果目前的数据是查询比较多,增删比较少的时候,那么就使用ArrayList存储这批数据。  比如 :高校的 图书馆

--------------------| LinkedList   LinkedList底层是使用了链表数据结构实现的,  特点: 查询速度慢,增删快。

--------------------| Vector(了解即可)

----------------| Set  如果实现了Set接口的集合类, 具备的特点: 无序,不可重复。

Linkedlist特有的方法:
1:方法介绍
        addFirst(E e) 
        addLast(E e) 
getFirst() 
getLast() 
removeFirst() 
removeLast() 
2:数据结构
1:栈 (1.6)  : 主要是用于实现堆栈数据结构的存储方式。
先进后出
push() 
pop()
2:队列(双端队列1.5): 主要是为了让你们可以使用LinkedList模拟队列数据结构的存储方式。
先进先出
offer()
poll()
3:返回逆序的迭代器对象      
descendingIterator()   返回逆序的迭代器对象
  
  
  1. package cn.itcast.list;
  2. import java.util.Iterator;
  3. import java.util.LinkedList;
  4. /*
  5. 集合的体系:
  6. ----------| Collection 单列集合的根接口
  7. ----------------| List 如果实现了List接口的集合类,具备的特点: 有序,可重复。
  8. --------------------| ArrayList ArrayList 底层是维护了一个Object数组实现 的, 特点: 查询速度快,增删慢。
  9. 什么时候使用ArrayList: 如果目前的数据是查询比较多,增删比较少的时候,那么就使用ArrayList存储这批数据。 比如 :高校的 图书馆
  10. --------------------| LinkedList LinkedList底层是使用了链表数据结构实现的, 特点: 查询速度慢,增删快。
  11. --------------------| Vector(了解即可)
  12. ----------------| Set 如果实现了Set接口的集合类, 具备的特点: 无序,不可重复。
  13. Linkedlist特有的方法:
  14. 1:方法介绍
  15. addFirst(E e)
  16. addLast(E e)
  17. getFirst()
  18. getLast()
  19. removeFirst()
  20. removeLast()
  21. 2:数据结构
  22. 1:栈 (1.6) : 主要是用于实现堆栈数据结构的存储方式。
  23. 先进后出
  24. push()
  25. pop()
  26. 2:队列(双端队列1.5): 主要是为了让你们可以使用LinkedList模拟队列数据结构的存储方式。
  27. 先进先出
  28. offer()
  29. poll()
  30. 3:返回逆序的迭代器对象
  31. descendingIterator() 返回逆序的迭代器对象
  32. */
  33. public class Demo8 {
  34. public static void main(String[] args) {
  35. LinkedList list= new LinkedList();
  36. list.add("张三");
  37. list.add("李四");
  38. list.add("王五");
  39. /*
  40. list.addFirst("狗娃"); //把元素添加到集合的首位置上。
  41. list.addLast("狗剩"); //把元素添加到集合的末尾处。
  42. System.out.println("获取集合中首位置的元素:"+list.getFirst());
  43. System.out.println("获取集合中末尾的元素:"+ list.getLast());
  44. System.out.println("删除集合中的首位置元素并返回:"+ list.removeFirst());
  45. System.out.println("删除集合中的末尾素并返回:"+ list.removeLast());
  46. list.push("狗娃"); //将该元素插入此集合的开头处。
  47. System.out.println("删除集合的首元素:"+list.pop()); // 移除并返回集合中的第一个元素
  48. list.offer("狗剩");
  49. System.out.println("删除集合的首元素: "+list.poll());
  50. System.out.println("集合中的元素:"+ list);
  51. */
  52. Iterator it = list.descendingIterator();
  53. while(it.hasNext()){
  54. System.out.println(it.next());
  55. }
  56. }
  57. }
需求:使用LinkedList存储一副扑克牌,然后实现洗牌功能。
        52张牌。
       一张扑克牌:花色、点数。。例如:梅花6
     
     
  1. package com.cn.linkedList;
  2. import java.util.LinkedList;
  3. import java.util.Random;
  4. /**
  5. * Author:Liu Zhiyong
  6. * Version:Version_1
  7. * Date:2016年7月15日18:11:01
  8. * Desc:需求:使用LinkedList存储一副扑克牌,然后实现洗牌功能。
  9. * 52张牌。
  10. * 一张扑克牌:花色、点数。。例如:梅花6
  11. */
  12. class Poker{
  13. String color;
  14. String count;
  15. public Poker(String color, String count) {
  16. this.color = color;
  17. this.count = count;
  18. }
  19. @Override
  20. public String toString() {
  21. // TODO Auto-generated method stub
  22. return "{" + this.color + this.count + "}";
  23. }
  24. }
  25. public class Demo2 {
  26. public static void main(String[] args) {
  27. LinkedList pokers = getPokers();
  28. System.out.println("洗牌前:");
  29. showPokers(pokers);
  30. shufflePokers(pokers);
  31. System.out.println("\n洗牌后:");
  32. showPokers(pokers);
  33. }
  34. //洗牌
  35. public static void shufflePokers(LinkedList pokers) {
  36. for(int i=0; i<10000000; i++){//洗10000000次
  37. Random random = new Random();//创建随机数
  38. int index1 = random.nextInt(pokers.size());//随机产生两个索引值
  39. int index2 = random.nextInt(pokers.size());
  40. //根据索引值取出两张牌,交换顺序
  41. //方式1
  42. Poker p1 = (Poker)pokers.get(index1);
  43. Poker p2 = (Poker)pokers.get(index2);
  44. pokers.set(index1, p2);
  45. pokers.set(index2, p1);
  46. //方式2
  47. // pokers.add(index1, pokers.remove(index2));
  48. }
  49. }
  50. //显示
  51. public static void showPokers(LinkedList pokers) {
  52. for(int i=0; i<pokers.size(); i++){
  53. System.out.print(pokers.get(i).toString());
  54. if(i%10 == 9){//每行显示10行
  55. System.out.println();
  56. }
  57. }
  58. }
  59. //生成扑克牌的方法
  60. public static LinkedList getPokers() {
  61. //该集合用于储存扑克对象。
  62. LinkedList list = new LinkedList();
  63. //定义数组存储所有的花色与点数
  64. String[] colors = {"黑桃", "红桃", "梅花", "方块"};
  65. String[] counts = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
  66. for(int i=0; i<colors.length; i++){
  67. for(int j=0; j<counts.length; j++){
  68. list.add(new Poker(colors[i], counts[j]));
  69. }
  70. }
  71. return list;
  72. }
  73. }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值