您的位置:首页 > 其它

集合框架值List接口

2016-04-30 19:31 316 查看
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);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: