java的List集合

来源:互联网 发布:约瑟夫环 知乎 编辑:程序博客网 时间:2024/05/19 01:10

List集合:可变长数组,是一个接口,继承了Collection接口

1、与数组的区别:

1)数组里面的数据都是同一种数据类型

2)比数组多了很多方法

2、特点:

1)List是一个有序集合,存放数据有下标,原因:原则上是数组,数组是有序的。

2)List中允许有重复数据

3)List中允许有NULL元素

3、实现类:

1)用ArrayList可变长数组实现List的方式。ArrayList中增、删、改、查的性能比较:

      a)查询性能最快

      b)增、删时因为操作过程中要维护索引,会有时间和内存消耗

用法参考代码:

public static void main(String[] args) {//1 声明List接口,List是个接口,ArrayList是实现了List接口的一个类//List是一个集合,可以放很多变量,不需要指定长度List list=new ArrayList();//添加数据list.add(1000);//无需指定索引,List判断当前存放数据,然后为其分配索引,index=0 size=1list.add("abc");//长度2list.add(99);list.add(null);    //返回list长度System.out.println(list.size());//删除元素list.remove(0);//按索引删除,将下标为0的数据删除//遍历list size()返回list长度for(int i=0;i<list.size();i++){//获取list的值System.out.println(list.get(0));//获得abc}//遍历list的另一种方法,比for循环更快  ListIterator list集合的迭代器,存放list集合的数据ListIterator iterator=list.listIterator();while(iterator.hasNext()){//判断iterator是否包含数据,hasNext()有没有下一个元素System.out.println(iterator.next());//取出当前的值}//常用方法:contains() 判断list中是否包含某一个元素,返回boolean类型,不能返回个数System.out.println(list.contains(99));//常用方法:toArray() 转换为数组Object[] s=list.toArray();//查询最大值的方法//限制List放的数据类型//Integer是int的包装类//拆箱 Integer转换为int的过程,自动发生//装箱 int转换为Integer的过程,自动发生Integer integer=new Integer(1000);int number=integer;List<Integer> list2=new ArrayList<Integer>();list2.add(60);list2.add(50);list2.add(90);list2.add(40);list2.add(80);int max=0;//存放临时的最大值for(int i:list2){if(i>max){max=i;}System.out.println(max);}}

2)用LinkedList双向链表实现List的方式,可以实现双向遍历,存放的数据可以不连续。LinkedList中增、删、改、查的性能比较:

      a)查询性能最慢,因为需要知道前后的索引index。

      b)增、删性能较快,因为操作过程中不需要维护索引。

用法参考代码:

public class LinkedListDemo {public static void main(String[] args) {List list=new LinkedList();list.add(100);//默认索引为0list.add(0,200);//该元素添加到索引为0,之前的元素向后移动list.add(0,300);//该元素添加到索引为0,之前的元素向后移动for(int i=0;i<list.size();i++){System.out.println(list.get(i));}//双向遍历ListIterator iterator=list.listIterator();//向前遍历while(iterator.hasPrevious()){System.out.println(iterator.previous());}//向后遍历while(iterator.hasNext()){System.out.println(iterator.hasNext());}}}

3)Vector:线程安全(线程同步:排队访问共享资源),不会因为多个线程抢一个资源而出现数据错误。用法参考代码:

public class VectorDemo {public static void main(String[] args) {Vector<Integer> v=new Vector<Integer>();v.add(100);v.add(null);v.add(null);v.add(200);//删除v.remove(1);for(int i:v){System.out.println(i);//输出Vector里所有的数据}}}


0 0
原创粉丝点击