List中的元素是有序排列的而且可重复

1.LinkedList

LinkedList是非线程安全的,底层是基于双向链表实现的

      LinkedList常用方法:

  •     toArray()  以正确的顺序(从第一个到最后一个元素)返回一个包含此列表中所有元素的数组
  •     size()  返回此列表中的元素数
  •     set(int index,E element)  用指定的元素替换此列表中指定位置的元素
  •     removeLast()  从此列表中删除并返回最后一个元素
  •     removeFirst()  从此列表中删除并返回第一个元素
  •     remove(int index)  删除该列表中指定位置的元素
  •     getFirst()  返回此列表中的第一个元素
  •     getLast()  返回此列表中的最后一个元素
  •     get(int index)  返回此列表中指定位置的元素
  •     add(E element)  将指定的元素追加到此列表的末尾
  •     add(int index,E element)  在此列表中的指定位置插入指定的元素
  •     addFirst(E element)  在该列表开头插入指定的元素
  •     addLast(E element)   将指定的元素追加到此列表的末尾
  •     clear()  从列表中删除所有元素

2.ArrayList

ArrayList是非线程安全的,底层是基于数组实现

     ArrayList常用方法:

  •    toArray()  以正确的顺序(从第一个到最后一个元素)返回一个包含此列表中所有元素的数组
  •    subList(int fromIndex,int toIndex)  返回此列表中指定的 fromIndex (包括)和 toIndex之间的独占视图
  •    size()  返回此列表中的元素数
  •    set(int index,E element)  用指定的元素替换此列表中指定位置的元素
  •    removeRange(int fromIndex,int toIndex)  从这个列表中删除所有索引在 fromIndex (含)和 toIndex之间的元素
  •    remove(int index)  删除该列表中指定位置的元素
  •    isEmpty()  如果此列表不包含元素,则返回true
  •    get(int index)  返回此列表中指定位置的元素
  •    add(E element)  将指定的元素追加到此列表的末尾
  •    add(int index,E element)  在此列表中的指定位置插入指定的元素
  •    clear()  从列表中删除所有元素
  1. package com.gather;
  2. /**
  3. * 人实体类
  4. * @author yyx
  5. * 2019年2月27日
  6. */
  7. public class Person {
  8. private String userName;
  9. private Integer userAge;
  10.  
  11. public Person(String userName, Integer userAge) {
  12. super();
  13. this.userName = userName;
  14. this.userAge = userAge;
  15. }
  16.  
  17. public String getUserName() {
  18. return userName;
  19. }
  20.  
  21. public void setUserName(String userName) {
  22. this.userName = userName;
  23. }
  24.  
  25. public Integer getUserAge() {
  26. return userAge;
  27. }
  28.  
  29. public void setUserAge(Integer userAge) {
  30. this.userAge = userAge;
  31. }
  32.  
  33. @Override
  34. public String toString() {
  35. return "Person [userName=" + userName + ", userAge=" + userAge + "]";
  36. }
  37.  
  38. }
  1. package com.gather;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Iterator;
  5. import java.util.LinkedList;
  6. import java.util.List;
  7.  
  8. /**
  9. *
  10. * @author yyx 2019年2月27日
  11. */
  12. public class LIstPractise {
  13. public static void main(String[] args) {
  14. List<Person> list = new ArrayList<>();
  15. Person p1 = new Person("张三", 22);
  16. Person p2 = new Person("李四", 23);
  17. Person p3 = new Person("王五", 18);
  18. list.add(p1);
  19. list.add(p2);
  20. list.add(p3);
  21.  
  22. // 第一种遍历方式:for循环
  23. for (int i = 0; i < list.size(); i++) {
  24. Person person = list.get(i);
  25. System.out.println(person);
  26. }
  27. System.out.println("----------------");
  28. // 第二种遍历方式:foreach
  29. for (Person person : list) {
  30. System.out.println(person);
  31. }
  32. System.out.println("----------------");
  33. // 第三种遍历方式:Iterator
  34. Iterator<Person> iterator = list.iterator();
  35. while (iterator.hasNext()) {
  36. Person person = iterator.next();
  37. System.out.println(person);
  38. }
  39. System.out.println("----------------");
  40.  
  41. LinkedList<Person> linkedList=new LinkedList<>();
  42. linkedList.addFirst(p3);
  43. linkedList.add(p2);
  44. linkedList.addLast(p1);
  45.  
  46. //getFirst() 返回此列表中的第一个元素
  47. System.out.println(linkedList.getFirst());
  48. //getLast() 返回此列表中的最后一个元素
  49. System.out.println(linkedList.getLast());
  50. System.out.println("----------------");
  51.  
  52. //toArray() 以正确的顺序(从第一个到最后一个元素)返回一个包含此列表中所有元素的数组
  53. Object[] persons=linkedList.toArray();
  54. System.out.println(persons[0]);
  55. }
  56. } 

   3.ArrayList和LinkedList的区别

  • ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构 
  • 对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针 
  • 对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据
  • ArrayList没有实现Queue队列接口,LinkedList实现了Queue接口

4.Vector

Vector是线程安全的,底层是基于动态数组实现

     Vector常用方法:

  •       add(E element)  将指定的元素追加到此Vector的末尾
  •       add(int index,E element)  在此Vector中的指定位置插入指定的元素 
  •       elementAt(int index)  返回指定索引处的组件
  •       get(int index)  返回此向量中指定位置的元素
  •       removeElementAt(int index)  删除指定索引处的组件
  •       removeRange(int fromIndex,int toIndex) 从此列表中删除所有索引为 fromIndex (含)和 toIndex之间的元素
  1. package com.gather;
  2.  
  3. import java.util.Iterator;
  4. import java.util.Vector;
  5. /**
  6. * 大小可以动态变化,其存储由容器自动处理
  7. * @author yyx
  8. * 2019年2月28日
  9. */
  10. public class VectorPractise {
  11. public static void main(String[] args) {
  12. Vector<Person> vector = new Vector<>();
  13. Person p1 = new Person("张三", 22);
  14. Person p2 = new Person("李四", 23);
  15. Person p3 = new Person("王五", 18);
  16. vector.add(p1);
  17. vector.add(p2);
  18. vector.add(p3);
  19.  
  20. Iterator<Person> iterator = vector.iterator();
  21. while (iterator.hasNext()) {
  22. Person person = iterator.next();
  23. System.out.println(person);
  24. }
  25. }
  26. }

     

Java集合-----List详解的更多相关文章

  1. java集合框架详解

    java集合框架详解 一.Collection和Collections直接的区别 Collection是在java.util包下面的接口,是集合框架层次的父接口.常用的继承该接口的有list和set. ...

  2. Java集合框架详解(全)

    一.Java集合框架概述 集合可以看作是一种容器,用来存储对象信息.所有集合类都位于java.util包下,但支持多线程的集合类位于java.util.concurrent包下. 数组与集合的区别如下 ...

  3. Java—集合框架详解

    一.描述Java集合框架 集合,在Java语言中,将一系类的对象看成一个整体. 首先查看jdk中的Collection类的源码后会发现Collection是一个接口类,其继承了java迭代接口Iter ...

  4. JAVA集合类型详解

    一.前言 作为java面试的常客[集合类型]是永恒的话题:在开发中,主要了解具体的使用,没有太多的去关注具体的理论说明,掌握那几种常用的集合类型貌似也就够使用了:导致这一些集合类型的理论有可能经常的忘 ...

  5. Java集合-----Set详解

    Set是没有重复元素的集合,是无序的 1.HashSet HashSet它是线程不安全的       HashSet常用方法:   add(E element)  将指定的元素添加到此集合(如果尚未存 ...

  6. Java集合-----Map详解

          Map与Collection并列存在.用于保存具有映射关系的数据:Key-Value      Map 中的 key 和  value 都可以是任何引用类型的数据      Map 中的 ...

  7. java集合(2)- java中HashMap详解

    java中HashMap详解 基于哈希表的 Map 接口的实现.此实现提供所有可选的映射操作,并允许使用 null 值和 null 键.(除了非同步和允许使用 null 之外,HashMap 类与 H ...

  8. Java集合中List,Set以及Map等集合体系详解

    转载请注明出处:Java集合中List,Set以及Map等集合体系详解(史上最全) 概述: List , Set, Map都是接口,前两个继承至collection接口,Map为独立接口 Set下有H ...

  9. 最新java数组的详解

    java中HashMap详解 http://alex09.iteye.com/blog/539545 总结: 1.就像引用类型的数组一样,当我们把 Java 对象放入数组之时,并不是真正的把 Java ...

随机推荐

  1. Linux and Oracle常用目录详解

    目录详解 目录 内容 / 根目录,一切从这里开始 /bin 包含系统启动和运行所必需的二进制文件(程序) /boot 包含Linux内核.最初的RAM磁盘映像(系统启动时,驱动程序会用到),以及启动加 ...

  2. Appium入门(6)__appium-desktop安装

    部分摘自:http://www.testclass.net/appium/appium-base-desktop/ Appium-Server主要用来监听移动设备,然后将不同编程语言编写的 appiu ...

  3. Maven之基本概念及特性的基本介绍

    maven最主要的概念是坐标和依赖,这是maven可以极大简化构建过程以及进行项目管理的基础. 坐标 类似于地理位置的坐标,maven的坐标也是用来标记的,不同是它是来标记maven中的不同组件,也就 ...

  4. linux strncpy()和strcat使用总结

    strcat原型:char *strcat(char *dest,const char *src); 把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'.src和de ...

  5. TZOJ 5225: 玩转二叉树

    描述 给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列.所谓镜面反转,是指将所有非叶结点的左右孩子对换.这里假设键值都是互不相等的正整数. 输入 输入第一行给出 ...

  6. 基于w2v词向量聚类出现的问题(有待解决)

    1.训练词向量代码如下:#训练词语为向量表示def w2v_train(self): ques = self.cu.execute('select question from activity')#将 ...

  7. 谈谈javascript数组排序方法sort()的使用,重点介绍参数使用及内部机制?

    语法:arrayObject.sort(sortby) 参数sortby可选,规定排序顺序,必须是函数: 注:如果调用该方法时没有使用参数,将按字符编码的顺序进行排序,要实现这一点,首先应把数组的元素 ...

  8. 【前端技术】web 开发常见问题--GET POST 区别

    web 开发常见问题--GET POST 区别   首先,get和post是什么? --两种 HTTP 请求方法:GET 和 POST HTTP Request Methods GET.POST 专业 ...

  9. SparkSql常用语句

    -连接sparksql: cd /home/mr/spark/bin ./beeline !connect jdbc:hive2://hostname:port --切换数据库 use databas ...

  10. [sh]shift参数左移用法

    shift概述 https://blog.csdn.net/wangjianno2/article/details/48879641 1.shell脚本中的位置参数 shell脚本中的位置参数有两种: ...