JAVA学习笔记(二十)- 集合 List
ArrayList 集合
/*
* ArrayList,实现List接口
* 声明数组时必须指定数组中元素的类型,可以是基本数据类型,也可以是引用数据类型
* 声明集合时可以不指定其元素的类型,元素类型默认为Object类型
*/
public class Test01
{
public static void main(String[] args)
{
// 创建一个ArrayList集合
ArrayList list = new ArrayList();
// 添加元素
list.add("tom");
list.add(25);
list.add(12.4);
list.add(true);
list.add(new Student());
list.add("tom");// List集合中的元素特点:有序、允许重复
list.add(1, "alice");
// list.add(20, 250);
list.add(null);
// 修改元素
list.set(0, "mike");
// 删除元素
list.remove(1);
list.remove("tom");
list.remove(new Integer(25));
// list.clear();//清空集合中的元素
// 获取集合中的元素
/*
* Object obj=list.get(2);//get()方法返回一个Object boolean flag=(Boolean)
* obj;
*/
boolean flag = (Boolean) list.get(2);
System.out.println("集合中索引为2的元素:" + flag);
// 判断集合中是否包括指定的元素
System.out.println("tom安在?" + list.contains("tom"));
System.out.println("集合是否为空:" + list.isEmpty());
System.out.println("mike在集合中的索引:" + list.indexOf("mike"));
System.out.println("元素个数:" + list.size());
// 循环遍历集合中的元素
for (int i = 0; i < list.size(); i++)
{
System.out.println(list.get(i));// 通过get()方法获取集合中的元素
}
// 将集合转换为数组
Object[] objs = list.toArray();
System.out.println("数组中的元素:"+Arrays.toString(objs));
}
}
ArrayList集合实例
/*
* ArrayList
*/
public class Test02
{
public static void main(String[] args)
{
// 创建存储狗狗信息的集合
List list = new ArrayList();
Dog dog1 = new Dog("旺财", "大狼狗", 2);
Dog dog2 = new Dog("黑子", "拉布拉多", 1);
Dog dog3 = new Dog("小美", "雪娜瑞", 5);
// 将狗狗对象添加到集合中
list.add(dog1);
list.add(dog2);
list.add(dog3);
// 查询狗狗的数量
System.out.println("共有" + list.size() + "条狗狗!");
System.out.println("分别为:");
for (Object obj : list)//使用foreach循环遍历集合
{
Dog dog = (Dog) obj;// 集合中元素类型默认为Object,需要强转
System.out.println(dog.getName() + "," + dog.getBrand() + ","
+ dog.getAge());
}
}
}
/*
* Dog类
*/
class Dog
{
private String name;
private String brand;
private int age;
public Dog(String name, String brand, int age)
{
super();
this.name = name;
this.brand = brand;
this.age = age;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getBrand()
{
return brand;
}
public void setBrand(String brand)
{
this.brand = brand;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
}
Vectory 集合
/*
* Vectory,用法与ArrayList类似,其是线程安全的,但效率性能不如ArrayList
* 已过时,不建议使用
*/
public class Test03
{
public static void main(String[] args)
{
// 创建一个Vector集合
Vector v = new Vector();
v.add(100);
v.add(new Double(6.5));
v.add(new Date());
v.add("hello");
v.add(new String("world"));
System.out.println("元素个数:" + v.size());
/*
* 遍历集合方法
*/
// 方法一
System.out.println("********方法一*******");
for (int i = 0; i < v.size(); i++)
{
System.out.println(v.get(i));
}
// 方法二
System.out.println("********方法二*******");
for (Object obj : v)
{
System.out.println(obj);
}
// 方法三:使用Enumeration迭代,适用于Vector、HashTable、Properties等集合,已过时
System.out.println("********方法三*******");
Enumeration e=v.elements();//调用Vector的elements()方法,返回一个Enumeration实例
while(e.hasMoreElements()){//调用Enumeration的hasMoreElements()方法判断是否有元素
Object obj=e.nextElement();//调用Enumeration的nextElement()方法获取当前元素
System.out.println(obj);
}
//直接输出集合
System.out.println(v);
}
}
Stack栈
import java.util.Stack;
/*
* Stack栈,继承自Vector
*/
public class Test04
{
public static void main(String[] args)
{
// 创建一个空堆栈
Stack stack = new Stack();
// 入栈
stack.push("tom");
stack.push("jack");
stack.push("alice");
// 出栈
System.out.println(stack.pop());
}
}
LinkedList集合
import java.util.LinkedList;
/*
* LinkedList,实现List接口,链表存储,频繁添加、修改或删除时效率更高
*/
public class Test05
{
public static void main(String[] args)
{
// 创建一个LinkedList集合
LinkedList list = new LinkedList();
list.add("itany");
list.add(12);
list.add(new Double(12.5));
list.add(0, "赵信");
list.addFirst("盖伦");
list.addLast("寒冰");
System.out.println("索引为2的元素:" + list.get(2));
System.out.println("第一个元素:" + list.getFirst());
System.out.println("第一个元素:" + list.get(0));
System.out.println("最后一个元素:" + list.getLast());
System.out.println("最后一个元素:" + list.get(list.size() - 1));
System.out.println("集合中的元素:" + list);
list.removeFirst();
list.removeLast();
System.out.println("集合中的元素:" + list);
}
}
ArrayLis、Vector、LinkedList性能对比
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Vector;
/*
* ArrayLis、Vector、LinkedList性能对比
*/
public class Test06
{
public static void main(String[] args)
{
ArrayList al = new ArrayList();
Vector v = new Vector();
LinkedList ll = new LinkedList();
// 测试ArrayList性能
long time1 = System.currentTimeMillis();// 获取执行前的毫秒数
for (int i = 1; i < 100000; i++)
{
al.add(0, i);
}
long time2 = System.currentTimeMillis();// 获取执行后的毫秒数
System.out.println("ArrayList花费的时间:" + (time2 - time1));
// 测试Vector性能
long time3 = System.currentTimeMillis();
for (int i = 1; i < 100000; i++)
{
v.add(0, i);
}
long time4 = System.currentTimeMillis();
System.out.println("Vector花费的时间:" + (time4 - time3));
// 测试LinkedList性能
long time5 = System.currentTimeMillis();
for (int i = 1; i < 100000; i++)
{
ll.addFirst(i);
}
long time6 = System.currentTimeMillis();
System.out.println("LinkedList花费的时间:" + (time6 - time5));
}
}
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。