Java - 集合 - List

Posted 爱穿新衣服的姑凉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java - 集合 - List相关的知识,希望对你有一定的参考价值。

1、List实现类:ArrayList、LinkedList、Vector
    • ArrayList使用:
       1 void test() {
       2         //声明
       3         List<String> testlist = new ArrayList<>();
       4 
       5         //添加元素 .add方法
       6         testlist.add("中国");     //将元素添加到集合的末尾
       7         testlist.add(1,"美国");   //将元素添加到指定的索引位置(索引从0开始,且要按顺序添加,否则编译报错)
       8         testlist.add("法国");
       9         testlist.add("日本");
      10         //删除元素 .remove方法
      11         testlist.remove(1);
      12         //修改元素 .set方法
      13         testlist.set(1,"新西兰");
      14 
      15         //获取元素 .get方法
      16         System.out.println("索引为1的元素是:" + testlist.get(1));
      17         //获取集合元素个数 .size方法
      18         System.out.println("集合元素个数是:" + testlist.size() );
      19     }

      遍历元素的3种方法:

       1 //元素遍历的3中方法:使用Iterator遍历、for循环遍历、foreach遍历
       2         System.out.println("使用Iterator遍历:");
       3         Iterator<String> testlistIterator=testlist.iterator();
       4         while (testlistIterator.hasNext()){
       5             System.out.print(testlistIterator.next());
       6             System.out.print("  ");
       7         }
       8 
       9         System.out.println("");   //仅仅为了换行显示
      10         System.out.println("使用for循环遍历:");
      11         for (int i=0;i<testlist.size();i++){
      12             System.out.print(testlist.get(i) + "  ");
      13         }
      14 
      15         System.out.println("");   
      16         System.out.println("使用foreach遍历:");
      17         for (String x:testlist) {
      18             System.out.print( x + "  ");
      19         }
    • LinkedList:LinkedList类的使用方法和ArrayList基本一样,只需修改下声明处的代码即可
      List<String> testList = new LinkedList<>();
    • Vector:
      List<String> platformList = new Vector<>();

2、ArrayList、LinkedList、Vector的区别【面试常问点】

List实现类
ArrayList
LinkedList
Vector
底层实现
数组结构
双链表
数组结构
优势
查找效率高
插入删除效率高
查找效率高
线程安全
非线程安全
非线程安全
线程安全
扩容机制
默认增长为原来的1.5倍
不需要动态扩容
默认增长为原来的2倍
 
备注:
数组和链表的区别:
  • 数组:是相同类型的元素按照一定顺序排列
  • 链表:是一种物理存储单元上非连续,非顺序的存储结构
线程安全:即某一时刻只有一个线程能够写Vector,避免多线程同时写而引起的不一致性,
并发环境下使用ArrayList或者LinkedList,可以调用Collections类的synchronizedList()方法

以上是关于Java - 集合 - List的主要内容,如果未能解决你的问题,请参考以下文章

201621123057 《Java程序设计》第9周学习总结

201621123002《java程序设计》第九周学习总结

201621123054《Java程序设计》第九周学习总结

201621123048《Java程序设计》第九周学习总结

java代码中 单表查询出的list集合 怎么读写到redis中

在Java中将字符串集合复制到另一个字符串的时间复杂度