一.集合
这就是java集合框架。从上图可以看出,集合类主要有Map接口和Collection接口派生而来,其中,Collection接口有两个常用的子接口,即List接口和set接口。
二.List接口
2.1含义
Collection接口是最基本的集合接口,可以存储一组不唯一,无序的对象。那么List接口继承Collection接口,他就是有序集合(按插入顺序)即List可以储存一组不唯一,有序的对象。
2.2ArrayList
ArrayList:底层是可变数组,遍历元素更快,改变值也就更快
方法 | 说明 |
---|---|
bollean add(Object) | 在列表的末尾添加元素o,起始索引位置从0开始 |
void add(int index,Object o) | 在指定的索引位置添加元素o,索引位置必须介于0和列表中元素个数之间 |
int size() | 返回列表中元素的个数 |
Object get(int index) | 返回指定索引位置处的元素,取出的元素是Object类型,使用前需要进行强制类型转换 |
void set(int index,Object obj) | 将Index索引位置的元素替换为obj元素 |
bollean contains(Object o) | 判断列表中是否存在指定元素o |
int indexOf(Object obj) | 返回元素在集合中的索引位置 |
bollean remove(Object o) | 从列表中删除元素o |
Object remove(int index) | 从列表中删除指定位置的元素,起始索引位置从0开始 |
2.2.1ArrayList示例(代码中包含详细解释)
示例1:使用ArrayList常用方法动态操作数据
public class Test1 {
public static void main(String[] args) {
//调用ArrayList的无参构造方法,创建集合对象
ArrayList list=new ArrayList();
list.add("张三丰");
list.add("郭靖");
list.add("杨过");
//判断集合中是否包含"李默愁"
System.out.println(list.contains("李莫愁"));
//把索引为0的数据移除
list.remove(0);
System.out.println("*************");
//将索引为1的元素替换为"黄蓉"
list.set(1,"黄蓉");
//增强for输出
for (Object o : list) {
String name=(String)o;
System.out.println(name);
}
//fori输出
//list.get(i)取出集合中索引为i的元素,并强制转换成String类型
for (int i = 0; i < list.size(); i++) {
String name=(String)list.get(i);
System.out.println(name);
}
//迭代输出
Iterator itr=list.iterator();
while (itr.hasNext()){
String name=(String)itr.next();
System.out.println(name); }
System.out.println("*****************");
//输出元素"小龙女"所在的索引位置
//输出-1代表集合中没有该元素
System.out.println(list.indexOf("小龙女"));
//输出元素"黄蓉"所在的索引位置
System.out.println(list.indexOf("黄蓉"));
//清空list中的数据
list.clear();
//判断list集合是否为空
System.out.println(list.isEmpty());
}
}
示例2:使用ArrayList集合存储新闻标题信息
public class NewTitle {
private int num;
private String type;
private String name;
public NewTitle(int num, String type, String name) {
this.num = num;
this.type = type;
this.name = name;
}
@Override
public String toString() {
return "NewTitle{" +
"num=" + num +
", type='" + type + '\'' +
", name='" + name + '\'' +
'}';
}
}
public class Test2 {
public static void main(String[] args) {
//创建新闻标题对象
NewTitle car = new NewTitle(1, "汽车", "tom");
NewTitle test = new NewTitle(2, "高考", "hah");
//创建存储新闻标题的集合对象
List a = new ArrayList();
//按照顺序依次添加标题
a.add(car);
a.add(test);
//获取新闻标题的总数
System.out.println("总数为:"+a.size()+"条");
//遍历集合对象
for (Object o : a) {
NewTitle title=(NewTitle)o;
System.out.println(title.toString());}
}
}
2.3LinkedList
LinkedList::底层是双向链表,插入和删除更快
方法 | 说明 |
---|---|
void addFirst(Object ob) | 将指定元素插入到当前集合的首部 |
void addLast(Object obj) | 将指定元素插入到当前集合的尾部 |
Object getFirst() | 获得当前集合的第一个元素 |
Object getLast() | 获得当前集合的最后一个元素 |
Object removeFirst() | 移除并返回当前集合的第一个元素 |
Object removeLast() | 移除并返回当前集合的最后一个元素 |