黑马程序员-java基础

---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------
 


 1.有序的(序号(索引)的序,不是顺序的序,相对Set对比产生的说法),可重复集合

    2.List是Collection的子接口,所以List可以使用Collection全部方法。(见本人博客相关文章)

    3.除此之外List还有自己特殊的方法,索引相关的操作(本文重点做这部分的介绍)

    4.删除的时候防止 躺着中枪   

    5.ListIterator:专门操作list的迭代器(本例未做详解,有兴趣请看api)

    6.两个基本实现类 ArrayList(非线程安全) 和 Vector(线程安全)

       1.Vector是一个古老的遗留类(性能差),不推荐使用。

       2.Vector(Stack) 栈数据结构,使用LinkedList代替

    7.Arrays.ArrayList是一个长度固定的List,只能遍历不能 操作

    8.LinkedList

       1.可以用来做双端队列和栈

       2.由于以链表形式保存,所以随机访问性能较差,但是迭代,插入、删除的性能比较好,因为可以直接改变指针所指地址(数据结构知识)

[java]  view plain copy
  1. package com.cxy.collection;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.Arrays;  
  5. import java.util.LinkedList;  
  6. import java.util.List;  
  7.   
  8. /** 
  9.  * @author cxy 
  10.  */  
  11. public class ListTest  
  12. {  
  13.     public static void main(String[] args)  
  14.     {  
  15.         List l=new ArrayList();  
  16.         l.add("幼儿园");  
  17.         l.add("小学");  
  18.         l.add("幼儿园");  
  19.         l.add("中学");  
  20.         l.add("大学");  
  21.         System.out.println(l);  //可以看出可以有重复数据  
  22.           
  23.         System.out.println("索引为3的元素是:"+l.get(3));  
  24.           
  25.         System.out.println("幼儿园第一次出现的索引:"+l.indexOf("幼儿园"));  
  26.         System.out.println("幼儿园第最后一次出现的索引:"+l.lastIndexOf("幼儿园"));  
  27.           
  28.         l.set(3"初中");  //类似修改操作   
  29.         l.add(4,"高中");   //插入  
  30.         System.out.println(l);  
  31.           
  32.         l.remove("幼儿园"); //会删除第一个找到的 幼儿园  
  33.         System.out.println(l);  
  34.         l.remove(new AA()); //由于AA的equals方法返回true,导致第一个元素被误认为是和AA相等的,于是躺着就中枪了  
  35.         System.out.println(l);  
  36.         l.remove(new BB()); //BB的equals方法返回false,所以List没有找到相等的元素删除。  
  37.         System.out.println(l);  
  38.         l.remove(0);  //通过序号删除  
  39.         System.out.println(l);  
  40.           
  41.         ArrayList l1=new ArrayList();  
  42.         l1.ensureCapacity(64); //大的数据集合,使用这个方法一次分配好空间,避免频繁多次分配,提高性能  
  43.         l1.trimToSize();  //调整至使用空间大小,避免内存浪费。  
  44.           
  45.         try  
  46.         {  
  47.             List temp = Arrays.asList("小学","中学","大学");  
  48.             temp.remove(0);  
  49.         }catch(Exception e)  
  50.         {  
  51.             System.out.println("temp是一个固定长度的list,只能遍历不能操作");  
  52.         }  
  53.           
  54.         LinkedList ll = new LinkedList();  
  55.         ll.add("aaa");  
  56.         ll.add("bbb");  
  57.         ll.add("ccc");  
  58.         ll.add("ddd");  
  59.         System.out.println("原始:"+ll);  
  60.         ll.addLast("zzz");  //队列--入队  
  61.         ll.removeFirst(); //队列--出队  
  62.         System.out.println("队列操作:"+ll);  
  63.         ll.addFirst("kkk"); //栈--入栈  
  64.         System.out.println("kkk入栈:"+ll);  
  65.         ll.removeFirst(); //栈--出栈  
  66.         System.out.println("kkk出栈:"+ll);  
  67.         ll.removeLast();  //体现双端队列  
  68.         System.out.println("=========================");  
  69.         ll = new LinkedList();  
  70.         ll.add("aaa");  
  71.         ll.add("bbb");  
  72.         ll.add("ccc");  
  73.         ll.add("ddd");  
  74.         System.out.println("重新初始化:"+ll);  
  75.         ll.push("kkk");  //栈--入栈  
  76.         System.out.println("kkk入栈:"+ll);  
  77.         ll.pop();  //栈--出栈  
  78.         System.out.println("kkk出栈:"+ll);  
  79.           
  80.         ll.offer(""); //队列--入队  
  81.         ll.offerFirst("");  //返回true的addFirst  
  82.         ll.offerLast("");  //返回true的addLast  
  83.           
  84.         ll.poll(); //获取并删除第一个  
  85.         ll.pollFirst();  //获取并删除第一个  
  86.         ll.pollLast();  //获取并删除最后一个  
  87.           
  88.         ll.peekFirst(); //获取不删除第一个  
  89.         ll.peekLast();  //获取不删除最后一个  
  90.           
  91.         ll.removeFirstOccurrence("aaa"); //删除第一个出现的aaa  
  92.         ll.removeLastOccurrence("aaa"); //删除最后一个出现的aaa  
  93.     }  
  94. }  
  95.   
  96.   
  97. class AA  
  98. {  
  99.     @Override  
  100.     public boolean equals(Object obj)  
  101.     {  
  102.         return true;  
  103.     }  
  104. }  
  105.   
  106. class BB  
  107. {  
  108.     @Override  
  109.     public boolean equals(Object obj)  
  110.     {  
  111.         return false;  
  112.     }  
  113. }  

---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------

详细请查看:<a href="http://www.itheima.com" target="blank">www.itheima.com</a>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值