ArrayList与Vector类
java类集中,由于List(为Collection接口的子接口)为接口,无法直接进行实例化,因此java中提高了List接口的两个实现类ArrayList和Vector类来进行类集之间的相应操作。
文章目录
Collection接口的主要方法
List接口的主要方法
List接口为Colletion接口的子接口,对Collection接口的方法进行了大量的扩充。
ArrayList类(实现List接口)的主要操作案例
向集合中添加元素
package chapter_thirteen;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
//测试类
public class ArrayListDemo01 {
public static void main(String[] args) {
List<String> allList = null; //声明List类集对象allList,存储对象的类型为String类型
Collection<String> allCollection = null; //声明Collection类集对象allCollection,存储对象类型为String类型
allList = new ArrayList<String>(); //通过对象的多态性向上转型实例化allList和allCollection对象
allCollection = new ArrayList<String>();
allList.add("Hello"); //添加Hello字符串到集合allList中
allList.add(0, "World"); //插入World字符串到集合的第一个位置
System.out.println(allList); //输出allList集合
allCollection.add("LXH"); //为allCollection对象添加字符串LXH
allCollection.add("www.mldn.cn"); //添加www.mldn.cn字符串到allCollection对象中
allList.addAll(allCollection); //将allCollection集合对象添加到allList集合中
allList.addAll(0,allCollection); //为allList集合添加allCollection集合到第0个位置
System.out.println(allList); //再次输出allList对象
}
}
运行结果
[World, Hello]
[LXH, www.mldn.cn, World, Hello, LXH, www.mldn.cn]
删除元素
package chapter_thirteen;
import java.util.ArrayList;
import java.util.List;
public class ArrayListDemo02 {
public static void main(String[] args) {
List<String> allList = null; //声明List类对象allList为null
allList = new ArrayList<String>(); //通过对象的多态性向上转型实例化List类对象
allList.add("Hello"); //向集合中增加字符串内容为"Hello"
allList.add(0, "World"); //向集合中第一个位置插入字符串内容为"World"
allList.add("MLDN"); //向字符串中增加内容为"MLDN"
allList.add("www.mldn.cn"); //向字符串中增加内容为"www.mldn.cn"
allList.remove(3); //将集合中下标为3的对象移除,此方法为List接口中定义的方法
allList.remove("MLDN"); //将集合中对象内容为"MLDN"的对象移除,此方法为Collection接口中的方法
System.out.println(allList); //打印集合allList
}
}
运行结果
[World, Hello]
输出List中的内容
package chapter_thirteen;
import java.util.ArrayList;
import java.util.List;
public class ArrayListDemo03 {
public static void main(String[] args) {
List<String> allList = null;
allList = new ArrayList<String>(); //通过对象的多态性向上转型实例化List类实例,
allList.add("Hello");
allList.add("World");
allList.add(0,"World");
allList.add("MLDN");
allList.add("www.mldn.cn"); //为集合中添加字符串内容
//使用List中的get()方法获取集合中的每一个元素,注意,此方法仅在List集合中存在
//使用Collection接口的size()方法获取集合的大小信息
System.out.println("由前向后输出:"); //顺序输出集合中的内容
for (int i = 0; i < allList.size(); i++){
System.out.print(allList.get(i) + "、");
}
System.out.println("\n由后向前输出:"); //逆序输出集合中的内容
for(int i = allList.size()-1; i >= 0; i--){
System.out.print(allList.get(i) + "、");
}
}
}
运行结果
由前向后输出:
World、Hello、World、MLDN、www.mldn.cn、
由后向前输出:
www.mldn.cn、MLDN、World、Hello、World、
将集合变为对象数组
package chapter_thirteen;
import java.util.ArrayList;
import java.util.List;
public class ArrayListDemo04 {
public static void main(String[] args) {
List<String> allList = null;
allList = new ArrayList<String>(); //通过对象的多态性向上转型实例化List类实例,
allList.add("Hello");
allList.add("World");
allList.add(0,"World");
allList.add("MLDN");
allList.add("www.mldn.cn"); //为集合中添加字符串内容
String[] strings = allList.toArray(new String[]{}); //指定泛型类型,将集合转变为String类集合
System.out.println("指定数组类型:");
for (int i = 0; i < strings.length; i++){ //输出字符串中的内容
System.out.print(strings[i] + "、"); //输出每一个元素
}
System.out.println("\n返回数组对象:");
Object[] objects = allList.toArray(); //直接将allList集合转换为Object类对象数组
for (int i = 0; i < objects.length; i++){ //循环输出对象数组中的内容
String temp = (String)objects[i];
System.out.print(temp + "、"); //输出每一个元素
}
}
}
运行结果
指定数组类型:
World、Hello、World、MLDN、www.mldn.cn、
返回数组对象:
World、Hello、World、MLDN、www.mldn.cn、
集合的其他相关操作
package chapter_thirteen;
import java.util.ArrayList;
import java.util.List;
public class ArrayListDemo05 {
public static void main(String[] args) {
List<String> allList = null;
allList = new ArrayList<String>(); //通过对象的多态性向上转型实例化List类实例,
System.out.println("集合是否为空?" + allList.isEmpty()); //判断集合中的内容是否为null
allList.add("Hello");
allList.add("World");
allList.add(0,"World");
allList.add("MLDN");
allList.add("www.mldn.cn"); //为集合中添加字符串内容
System.out.println("集合是否为空?" + allList.isEmpty()); //判断集合中的内容是否为null
System.out.println("字符串MLDN是否a在集合中存在?" + allList.contains("MLDN")); //判断字符串MLDN在集合中是否存在
List<String> allSub = allList.subList(2,3);
System.out.println("集合截取:" + allSub); //汲取集合中的对象数组为一个新的集合,并输出
System.out.println("MLDN字符串所在的位置:" + allList.indexOf("MLDN")); //输出集合中的内容字符串内容是否存在
}
}
运行结果
集合是否为空?true
集合是否为空?false
字符串MLDN是否在集合中存在?true
集合截取:[World]
MLDN字符串所在的位置:3
Vector类的相关操作
Vector类为一个挽救的子类,是一个元老级别的子类,也实现了List接口。
添加与输出集合内的信息
package chapter_thirteen;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
public class VectorDemo01 {
public static void main(String[] args) {
List<String> allList = null;
allList = new Vector<String>(); //通过对象的多态性向上转型实例化List类实例,
allList.add("Hello");
allList.add("World");
allList.add(0,"World");
allList.add("MLDN");
allList.add("www.mldn.cn"); //为集合中添加字符串内容
for (int i = 0; i < allList.size(); i++){ //循环输出
System.out.print(allList.get(i) + "、"); //通过get()方法取出每一个元素
}
}
}
运行结果
World、Hello、World、MLDN、www.mldn.cn、
使用Vector独有的方法添加输出对象
package chapter_thirteen;
import java.util.Vector;
public class VectorDemo02 {
public static void main(String[] args) {
Vector<String> vector = new Vector<String>(); //实例化Vector对象
vector.addElement("Hello"); //此方法为Vector自己定义
vector.addElement("World"); //此方法为Vector自己定义
vector.addElement("MLDN"); //此方法为Vector自己定义
for (int i = 0; i < vector.size(); i++){ //循环取出
System.out.print(vector.get(i) + "、"); //取得集合中的每一个元素
}
}
}
运行结果
Hello、World、MLDN、
ArrayList与Vector的区别
总结
从实际开发来看,ArrayList类使用较多,Vector类使用较少,小伙伴们根据需要自行使用哦~