集合框架值List接口

1list接口

list继承了collection接口,list是有序的Collection,允许重复,空元素。

虽然list可以存各种类型,但是取数据时不一样的对象不一样,所以往list中存数据存一个类型的
所以创建集合对象时,使用泛型

例如 List list =new Arraylist
强制性的把元素要求为string

public interface List extend Collect

有序的collection(也称之为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确的控制,用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。
/*list接口
* 1 必须有序
* 2 允许有重复的元素
* 3 允许null值
*
*/

2 Arraylist

public class ArraylList<E> extends AbstriactList<E> implement  LIst<E> ,RandomAcess,Cloneable,Serialiable

LIst接口的大小可变的数组的实现(ArrayList的实现实际上就是动态对象数组的实现),实现了所有可选列表操作,并允许包括null在内的所有元素,除了实现list接口外,此类还提供了一些方法来操作内部用来存储列表的数组的大小

 * Arraylist实现类,实际上就是动态数组。
 * 1、默认构造的Arraylist对象是10个大小的数组
 * 2、如果数组已满,就需要动态的扩充数组,扩充的算法:[(原数组数组长度*3)/2]+1
 * 3、内部使用动态数组实现
 * 4、如果已经知道元素的个数,可以使用指定初始容量的构造方法创建ArrayList对象,
 * 这样可以有效的避免数组扩充的次数过多,从而提高效率。
 * 5 Arrylist的插入删除操作会影响性能。ArrayList就类似于数组
 * 
 * 

代码实现

import java.util.ArrayList;
public class LIstDemo {

    public static void arraylist() {
        //创建Arraylist 对象
        ArrayList list=new ArrayList();
        //添加各种元素
        list.add(1);  
        list.add(10); 
        list.add(10);     //允许重复
        list.add("mazhongyi");
        list.add(true);

        //插入方法
        list.add(2,50);//指定位置插入   效率低,插入位置之后的元素要一个个的往后移

        //取元素
        System.out.println(list.get(2));

        //清除元素
        //list.clear();

        //查找列表中是否包指定的含元素,则返回true
        System.out.println(list.contains(10));

        //检查集合是否为空
        System.out.println(list.isEmpty());

        //删除指定索引的元素
        System.out.println(list.remove(1)); //参数是索引地址,返回list索引对应的元素


        //查找一个指定元素对象返回的索引,如果有重复的,返回第一个元素的下标,如果没有返回-1
        System.out.println(list.indexOf(10));

        //

        System.out.println("该集合一共有多少元素?   "+list.size());

    }
    public static void main(String[] args) {
        arraylist();
    }

}

运行结果

50
true
false
10
2
该集合一共有多少元素?   5

3 vector

public class ArraylList<E> extends AbstriactList<E> implement  LIst<E> ,RandomAcess,Cloneable,Serializable

Vector类可以实现可增长的对象数组,与数组一样,它包含可以使用整数索引进行访问的组件,但是,Vector的大小可以根据需要增大或者缩小,以试用创建Vector后进行添加或者移除项操作

 * vector实现类
 * 1 使用动态对象数组实现
 * 2 默认构造方法初始化容量为10
 * 3 扩充方式和Arraylist不一样,vector的扩充方式如下:
 * (1)如果有指定增量,扩充方式就是当前容量加上指定容量
 * (2)如果没有指定增量,扩充方式是原容量*2;
 * 4 add方法前面加了一个synchronized,所以vector是线程安全的,ArrayList没有,suoyi
 *   ArrayList不是线程安全的
 *

代码实现

import java.util.Vector;

public class VectorDemo {


    public static void vector(){
        Vector vector=new Vector();
        vector.add("马忠义");
        vector.add(12);
        vector.add("panpeizhu");
        vector.add("lazup");
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub

    }

}

4 linkedList

public class LinkedList<E> extends abstracSequentiaList<E> 
    implements List<E>,Deque<E>,CLoneable,Serializable

实际上就是list接口的链表的实现,实现了所有可选的列表操作,并且允许所有元素(包括null)。除了实现list接口外,LinkedList类还为在列表的开头以及结尾get,remove和insert提供了统一的命名方法。

  • 1 使用双向列表实现
  • 2 因为是基于链表实现的,所以说适合插入和删除,arralist和vecotor都是基于数据实现的
  • 3 试用场景:有一组数据,频繁的对数据进行插入和删除,用linkedlist,如果没有,多线程的用
  • vector,单线程的用arraylist
  • 4

  • 代码实现
    public class LinkedListDemo {
    public static void LinkedList(){
    java.util.LinkedList link=new java.util.LinkedList();
    link.add(“马忠义”);
    link.add(“panpeizhu”);
    link.add(12);
    }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值