集合框架值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
LIst接口的大小可变的数组的实现(ArrayList的实现实际上就是动态对象数组的实现),实现了所有可选列表操作,并允许包括null在内的所有元素,除了实现list接口外,此类还提供了一些方法来操作内部用来存储列表的数组的大小
代码实现
运行结果
3 vector
Vector类可以实现可增长的对象数组,与数组一样,它包含可以使用整数索引进行访问的组件,但是,Vector的大小可以根据需要增大或者缩小,以试用创建Vector后进行添加或者移除项操作
代码实现
4 linkedList
实际上就是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);
}
}
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);
}
}
相关文章推荐
- 【R笔记】R的内存管理和垃圾清理
- 344. Reverse String
- 【R笔记】glm函数报错原因及解析
- (转)集成架构:对比 Web API 与面向服务的架构和企业应用程序集成
- 【R笔记】给R加个编译器——notepad++
- nyoj 456
- 现在淘宝客好做吗?
- 提示库出错可用下面这个代码
- Caffe学习系列(2):数据层及参数
- 关于VB6.0的Microsoft windows common control 6.0 对象库未注册问题
- 342. Power of Four
- SAP中销售SD模块中基础知识
- Leetcode - Majority Element
- 《More Effective C++》读书笔记-异常
- 简单的makefile
- 集合框架Set接口之hashset
- DestoryChildren
- AndroidApp 设计小结
- Java——异常处理
- CSAPP第二次实验 bomb二进制炸弹的破解