您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
javase第三季学习笔记-集合框架List接口
发布时间:2017-08-10 15:50:22编辑:雪饮阅读()
List接口
public interface List<E>
extends Collection<E>
有序的collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。
ArrayList
public class ArrayList<E>
extends AbstractList<E>
implements List<E>,RandomAccess,Cloneable,Serializable
List接口的大小可变数组的实现。实现了所有可选列表操作,并允许包括null在内的所有元素。除了实现List接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。
代码示例:
package com.vince.list;
import java.util.ArrayList;
/*
list接口:
允许重复元素
必须是有序的
允许null元素
*/
public class ListDemo {
/*
ArrayList实现类
默认构造的ArrayList对象是10个大小的数组
如果数组已存满,就需要动态扩充数组,算法是:(原数组长度*3/2)+1,大约是原数组的一半左右
内部使用动态数组实现
如果我们已知元素个数,那么可以使用指定初始容量的构造方法创建ArrayList对象,这样可以有效的避免数组扩充的次数过多,从而提高效率
使用插入或删除操作,会导致数组需要重新创建,会影响性能,尽量少用
线程不安全
*/
public static void arraylist(){
//创建ArrayList对象
ArrayList list=new ArrayList();
//添加元素
list.add(10);
list.add("小白");
list.add(true);
list.add("雪饮");
list.add("柠檬不萌");
System.out.println("一共有元素:"+list.size()+"个");
System.out.println("第3个元素是 :"+list.get(2));
//根据索引删除元素成功后返回的是该索引对应的元素值
//如果传参为非int则不按索引删除,而是按照元素值删除,将传参的值作为元素值来查找删除之
System.out.println("删除指定索引'1'后返回:"+list.remove(1));
//清除所有元素
list.clear();
System.out.println("一共有元素:"+list.size()+"个");
System.out.println("列表中是否包含元素‘17’:"+list.contains(17));
System.out.println("元素‘17’的位置:"+list.indexOf(17));
System.out.println("集合是否为空:"+list.isEmpty());
}
public static void main(String[] args) {
arraylist();
}
}
Vector
public class Vector<E>
extends AbstractList<E>
implements List<E>,RandomAccess,Cloneable,Serializable
Vector类可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件。但是,Vector的大小可以根据需要增大或缩小,以适应创建Vector后进行添加或移除项的操作。
代码示例:
package com.vince.list;
import java.util.Vector;
public class ListDemo {
/*
Vector实现类
使用动态对象数组实现
默认构造方法初始化容量为10
扩充方式:如果有指定增量:当前容量+增量;如果没有增量:原容量*2
线程安全
*/
public static void vector(){
Vector vector=new Vector();
vector.add("雪饮大侠");
vector.add("柠檬不萌");
for (Object object : vector) {
System.out.println(object);
}
}
public static void main(String[] args) {
vector();
}
}
LinkedList
public class LinkedList<E>
extends AbstractSequentialList<E>
implements List<E>,Deque<E>,Cloneable,Serializable
List接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括null)。除了实现List接口外,LinkedList类还为在列表的开头及结尾get、remove和insert元素提供 了统一的命名方法。
示例代码:
package com.vince.list;
import java.util.LinkedList;
public class ListDemo {
/*
LinkedList实现类
使用双向链表实现
优点,适合插入,删除操作很方便
*/
public static void linkedlist(){
//下面是泛型对象声明的三种写法,最后一种最权威最标准化
//LinkedList list=new LinkedList();
//LinkedList<String> list=new LinkedList();
LinkedList<String> list=new LinkedList<String>();
list.add("柠檬不萌");
list.add("杜姐姐");
list.add("雪饮大侠");
for (Object object : list) {
System.out.println(object);
}
}
public static void main(String[] args) {
linkedlist();
}
}
关键字词:javase,集合框架List接口