------- android培训java培训、期待与您交流!
----------

Collection :

|--List:元素是有序的,元素可以重复。因为该集合体系有索引。

        |--ArrayList:底层的数据结构使用的是数组结构。特点:查询速度很快。但是增删稍慢。线程不同步。

        |--LinkedList:底层使用的链表数据结构。特点:增删速度很快,查询稍慢。线程不同步。

        |--Vector:底层是数组数据结构。线程同步。被ArrayList替代了。因为效率低。

    |--Set:元素是无序,元素不可以重复。

List:

    特有方法。凡是可以操作角标的方法都是该体系特有的方法。

 



    add(index,element); 在列表的指定位置插入指定元素

addAll(index,Collection); 将指定 collection 中的所有元素都插入到列表中的指定位置

  1. import java.util.ArrayList;
  2.  
  3. public class ListDemo
  4. {
  5. public static void main(String[] args)
  6. {
  7. ArrayList al = new ArrayList();
  8.  
  9. al.add("01");
  10. al.add("02");
  11. al.add("03");
  12. System.out.println(al);
  13.  
  14. al.add(1,"04");
  15. System.out.println(al);
  16.  
  17. ArrayList al1 = new ArrayList();
  18.  
  19. al1.add("05");
  20. al1.add("06");
  21. System.out.println(al1);
  22.  
  23. al.addAll(1,al1);
  24. System.out.println(al);
  25. }
  26. }

删 

    remove(index); 移除列表中指定位置的元素

  1. import java.util.ArrayList;
  2.  
  3. public class ListDemo
  4. {
  5. public static void main(String[] args)
  6. {
  7. ArrayList al = new ArrayList();
  8.  
  9. al.add("01");
  10. al.add("02");
  11. al.add("03");
  12. System.out.println(al);
  13.  
  14. al.remove(1);
  15. System.out.println(al);
  16.  
  17. }
  18. }

set(index,element); 用指定元素替换列表中指定位置的元素

  1. import java.util.ArrayList;
  2.  
  3. public class ListDemo
  4. {
  5. public static void main(String[] args)
  6. {
  7. ArrayList al = new ArrayList();
  8.  
  9. al.add("01");
  10. al.add("02");
  11. al.add("03");
  12. System.out.println(al);
  13.  
  14. al.set(1,"04");
  15. System.out.println(al);
  16.  
  17. }
  18. }



    get(index): 返回列表中指定位置的元素。

subList(from,to); 返回列表中指定的之间的部分,包含头不包含尾

listIterator(); 返回此列表元素的列表迭代器(按适当顺序)。

int indexOf(obj):获取指定元素的位置。

listIterator(int index); 返回列表中元素的列表迭代器(按适当顺序),从列表的指定位置开始。

  1. import java.util.ArrayList;
  2. import java.util.Iterator;
  3. import java.util.List;
  4.  
  5. /**
  6. *
  7. * 获取集合中元素的方法演示
  8. *
  9. */
  10.  
  11. public class ListDemo
  12. {
  13. public static void main(String[] args)
  14. {
  15. ArrayList al = new ArrayList();
  16.  
  17. al.add("01");
  18. al.add("02");
  19. al.add("03");
  20. System.out.println(al);
  21.  
  22. List sub = al.subList(0,2);
  23. System.out.println(sub);
  24.  
  25. System.out.println("01 对应的角标是:"+al.indexOf("01"));
  26.  
  27. for (int i=0;i<al.size();i++)//方法一
  28. {
  29. System.out.println(al.get(i));
  30. }
  31.  
  32. for (Iterator it = al.iterator();it.hasNext(); )//方法2
  33. {
  34. System.out.println(it.next());
  35. }
  36.  
  37. }
  38. }

List集合特有的迭代器。ListIterator是Iterator的子接口。

 

        在迭代时,不可以通过集合对象的方法操作集合中的元素。因为会发生ConcurrentModificationException异常。所以,在迭代器时,只能用迭代器的方法操作元素,可是 Iterator方法是有限的,只能对元素进行判断,取出,删除的操作,如果想要其他的操作如添加,修改等,就需要使用其子接口,ListIterator。该接口只能通过List集合的listIterator方法获取。

  1. import java.util.ArrayList;
  2. import java.util.ListIterator;
  3.  
  4. /**
  5. *
  6. * ListIterator演示
  7. *
  8. */
  9.  
  10. public class ListDemo
  11. {
  12. public static void main(String[] args)
  13. {
  14. ArrayList al = new ArrayList();
  15.  
  16. al.add("01");
  17. al.add("02");
  18. al.add("03");
  19. System.out.println(al);
  20.  
  21. ListIterator li = al.listIterator();
  22. System.out.println(li.hasNext());//判断后面有没有元素
  23. System.out.println(li.hasPrevious());//判断前面有没有元素
  24.  
  25. //把集合里面的元素替换成另一种元素
  26. while (li.hasNext())
  27. {
  28. Object obj = li.next();
  29.  
  30. if (obj.equals("02"))
  31. li.set("04");
  32. }
  33.  
  34. System.out.println(li.hasNext());//判断后面有没有元素
  35. System.out.println(li.hasPrevious());//判断前面有没有元素
  36. System.out.println(al);
  37. }
  38. }
  1. import java.util.ArrayList;
  2. import java.util.Iterator;
  3.  
  4. /**
  5. * 去除ArrayList中的重复元素
  6. * 定义一个临时容器储存
  7. * 如果不相同存入,相同就不存
  8. * 便利完成之后返回
  9. */
  10. public class ArrayListTest
  11. {
  12. public static void main(String[] args)
  13. {
  14. ArrayList al = new ArrayList();
  15.  
  16. al.add("01");
  17. al.add("02");
  18. al.add("01");
  19. al.add("04");
  20. al.add("02");
  21. System.out.println(al+"------"+al.size());
  22.  
  23. System.out.println(SingleElement(al));
  24. }
  25.  
  26. //定义一个函数,返回一个ArrayList集合,参数ArrayList。功能是去除ArrayList中的重复元素.
  27. public static ArrayList SingleElement(ArrayList al)
  28. {
  29. ArrayList arrayBuffer = new ArrayList();
  30.  
  31. for (Iterator it = al.iterator();it.hasNext(); )
  32. {
  33. Object obj = it.next();
  34.  
  35. if (!arrayBuffer.contains(obj))
  36. {
  37. arrayBuffer.add(obj);
  38. }
  39. }
  40. return arrayBuffer;
  41.  
  42. }
  43.  
  44. }
  1. <span style="font-size:14px;"><strong></strong></span><pre class="java" name="code">import java.util.ArrayList;
  2. import java.util.Iterator;
  3.  
  4. /**
  5. * 将自定义元素存到ArrayList结构中去,并去掉重复元素
  6. * 比如:存人对象。同姓名同年龄,视为同一个人。为重复元素。
  7. *
  8. * 思路:
  9. * 对人描述,将数据封装进人对象。
  10. * 定义容器,将人存入。
  11. * 取出。
  12. * List集合判断元素是否相同,依据是元素的equals方法。
  13. */
  14. public class ArrayListTest
  15. {
  16. public static void main(String[] args)
  17. {
  18. ArrayList al = new ArrayList();
  19.  
  20. al.add(new Person("zhangsan",13));
  21. al.add(new Person("lisi",13));
  22. al.add(new Person("zhangsan",13));
  23. al.add(new Person("zhangsan",15));
  24. al.add(new Person("lisi",13));
  25. al.add(new Person("lisi",12));
  26.  
  27. al = singleElement(al);
  28.  
  29. for (Iterator it = al.iterator();it.hasNext(); )
  30. {
  31. Person p = (Person)it.next();
  32. System.out.println(p.getName()+"------"+p.getAge());
  33. }
  34. }
  35.  
  36. //定义一个函数,返回ArrayList,参数ArrayList。函数功能去除ArrayList集合中的重复元素
  37. public static ArrayList singleElement(ArrayList al)
  38. {
  39. ArrayList arrayBuffer = new ArrayList();
  40.  
  41. for (Iterator it = al.iterator();it.hasNext(); )
  42. {
  43. if (!arrayBuffer.contains(it.next()))
  44. {
  45. arrayBuffer.add(it.next());
  46. }
  47. }
  48. return arrayBuffer;
  49. }
  50. }
  51.  
  52. //声明一个Person对象,具有年龄和名字的属性
  53. class Person
  54. {
  55. private String name;
  56. private int age;
  57.  
  58. Person(String name,int age)
  59. {
  60. this.name = name;
  61. this.age = age;
  62. }
  63.  
  64. public boolean equals(Object obj)
  65. {
  66. if(!(obj instanceof Person))
  67. return false;
  68. Person p = (Person)obj;
  69. return this.name.equals(p.name) && this.age == p.age;
  70. }
  71.  
  72. public String getName()
  73. {
  74. return name;
  75. }
  76.  
  77. public void setName(String name)
  78. {
  79. this.name = name;
  80. }
  81.  
  82. public int getAge()
  83. {
  84. return age;
  85. }
  86.  
  87. public void setAge(int age)
  88. {
  89. this.age = age;
  90. }
  91. }
  1.  

LinkedList:特有方法:

addFirst(); 将指定元素插入此列表的开头。

addLast();  将指定元素添加到此列表的结尾。

getFirst(); 返回此列表的第一个元素。

getLast(); 返回此列表的最后一个元素。

 

get方法获取元素,但不删除元素。如果集合中没有元素,会出现NoSuchElementException

 

removeFirst();  移除并返回此列表的第一个元素。

removeLast(); 移除并返回此列表的最后一个元素。

remove方法获取元素,但是元素被删除。如果集合中没有元素,会出现NoSuchElementException

  1. import java.util.LinkedList;
  2.  
  3. /**
  4. *
  5. * LinkedList演示
  6. *
  7. */
  8.  
  9. public class ListDemo
  10. {
  11. public static void main(String[] args)
  12. {
  13. LinkedList ll = new LinkedList();
  14.  
  15. ll.add("02");
  16. ll.addFirst("01");
  17. ll.addLast("03");
  18. System.out.println(ll);
  19.  
  20. System.out.println(ll.getFirst());
  21. System.out.println(ll.getLast());
  22. System.out.println(ll);
  23.  
  24. System.out.println(ll.removeFirst());
  25. System.out.println(ll.removeLast());
  26. System.out.println(ll);
  27.  
  28. //打印移出方式
  29. while (!ll.isEmpty())
  30. {
  31. System.out.println(ll.removeLast());
  32. }
  33. }
  34. }

 在JDK1.6出现了替代方法: 

 

offerFirst(); 在此列表的开头插入指定的元素。

offerLast(); 在此列表末尾插入指定的元素。

 

peekFirst();  获取但不移除此列表的第一个元素;如果此列表为空,则返回 null

peekLast(); 获取但不移除此列表的最后一个元素;如果此列表为空,则返回 null

获取元素,但不删除元素。如果集合中没有元素,会返回null。

 

pollFirst(); 获取并移除此列表的第一个元素;如果此列表为空,则返回 null

pollLast(); 获取并移除此列表的最后一个元素;如果此列表为空,则返回 null

获取元素,但是元素被删除。如果集合中没有元素,会返回null。

堆栈和队列: 

堆栈:先进后出  如同一个杯子。

队列:先进先出 First in First out  FIFO 如同一个水管。

  1. import java.util.LinkedList;
  2.  
  3. /**
  4. *
  5. * 用LinkedList模拟一个堆栈结构的
  6. *
  7. */
  8.  
  9. public class DuiZhanDemo
  10. {
  11. public static void main(String[] args)
  12. {
  13. DuiZhan dz = new DuiZhan();
  14.  
  15. dz.myAdd("01");
  16. dz.myAdd("02");
  17. dz.myAdd("03");
  18.  
  19. while (!dz.isNull())
  20. {
  21. System.out.println(dz.myGet());
  22. }
  23. }
  24. }
  25.  
  26. //堆栈结构:先进后出
  27. class DuiZhan
  28. {
  29. private LinkedList link;
  30.  
  31. DuiZhan()
  32. {
  33. link = new LinkedList();
  34. }
  35.  
  36. public void myAdd(Object obj)
  37. {
  38. link.addFirst(obj);
  39. }
  40.  
  41. public Object myGet()
  42. {
  43. return link.removeFirst();
  44. }
  45.  
  46. public boolean isNull()
  47. {
  48. return link.isEmpty();
  49. }
  50. }

------- android培训java培训、期待与您交流!
----------

黑马程序员——JAVA基础之List集合的更多相关文章

  1. 黑马程序员——JAVA基础之Map集合

    ------- android培训.java培训.期待与您交流! ---------- Map集合: 该集合存储键值对.一对一对往里存.而且要保证键的唯一性. 和Set很像,其实Set底层就是使用了M ...

  2. 黑马程序员——JAVA基础之set集合

    ------- android培训.java培训.期待与您交流! ---------- Set:       元素是无序(存入和取出的顺序不一定一致),元素不可以重复.    Set接口中常用的类: ...

  3. 黑马程序员——JAVA基础之简述集合collection

    ------- android培训.java培训.期待与您交流! ---------- 集合: 为什么出现集合类? •  面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对 ...

  4. 黑马程序员——JAVA基础之Vector集合

    ------- android培训.java培训.期待与您交流! ---------- 基本已被淘汰 枚举就是Vector特有的取出方式.枚举和迭代器很像.其实枚举和迭代是一样的.   因为枚举的名称 ...

  5. 黑马程序员----java基础笔记中(毕向东)

    <p>------<a href="http://www.itheima.com" target="blank">Java培训.Andr ...

  6. 黑马程序员Java基础班+就业班课程笔记全发布(持续更新)

    正在黑马学习,整理了一些课程知识点和比较重要的内容分享给大家,也是给自己拓宽一些视野,仅供大家交流学习,大家有什么更好的内容可以发给我 ,现有黑马教程2000G  QQ 1481135711 这是我总 ...

  7. 黑马程序员----java基础笔记上(毕向东)

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 笔记一共记录了毕向东的java基础的25天课程,分上.中.下 本片为上篇,涵盖前10天课程 1. ...

  8. 黑马程序员——JAVA基础之泛型和通配符

    ------- android培训.java培训.期待与您交流! ---------- 泛型:            JDK1.5版本以后出现新特性.用于解决安全问题,是一个类型安全机制. 泛型好处: ...

  9. 黑马程序员——JAVA基础之简述面向对象,类,变量,匿名对象

    ------- android培训.java培训.期待与您交流! ---------- 面向对象: 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程 强调的是功能行为 面向对象 将 ...

随机推荐

  1. 读取properties中的key对应的value

  2. Ubuntu 14.10 下运行进程实时监控pidstat命令详解

    简介 pidstat主要用于监控全部或指定进程占用系统资源的情况,如CPU,内存.设备IO.任务切换.线程等.pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上 ...

  3. (转) function与感叹号

    原文:http://blog.sina.com.cn/s/blog_775f158f01016j12.html function与感叹号(转)(2012-08-29 12:29:12) 最近有空可以让 ...

  4. UIkit框架之UIimage

    1.继承链:NSObject 2.以下有三种方法来创建图片对象 (1) imageNamed:inBundle:compatibleWithTraitCollection:从image asset或者 ...

  5. STL 源码分析《2》----nth_element() 使用与源码分析

    Select 问题: 在一个无序的数组中 找到第 n 大的元素. 思路 1: 排序,O(NlgN) 思路 2: 利用快排的 RandomizedPartition(), 平均复杂度是 O(N) 思路 ...

  6. Unity3D ShaderLab Use Properties

    在上一篇,学会了怎么使用ShaderLab 语法:Properties,这一次,我们将会使用属性值点亮材质球. 1:Delete>sampler2D _MainTex; 2:1行位置Add> ...

  7. 阅读<构建之法>第13、14、15、16、17章 与 《一个程序员的生命周期》读后感

    第十三章   软件测试 这一章介绍了很多关于测试的方法,比如说单元测试,代码覆盖率测试,构建验证测试,验收测试等,我有一个很纠结的问题,如果我开发软件,是把这么多测试全做完,还是挑一些测试来进行呢?如 ...

  8. Warning: Data truncated for column 'AirPress' at row 1

    /************************************************************************ * Warning: Data truncated ...

  9. Ubuntu下安装lamp

    在Ubuntu里安装PHP环境时可以用恨简单的方法,直接用tasksel命令安装. 首先要安装这个命令: sudo apt-get install tasksel 然后,sudo tasksel in ...

  10. 代码静态分析工具--PMD,Findbugs,CheckStyle

    最近学习Mybatis的官方文档,看到了[项目文档]一节有很多内容没有见过,做个笔记,理解一下. PMD 扫描Java源代码,查找潜在的问题,如: 可能的bugs,如空的try/catch/final ...