一、Java集合框架提供了一套性能优良、使用方便的接口和类,它们位于java.util包中
1、Collection 接口存储一组不唯一,无序的对象
2、List 接口存储一组不唯一,有序(插入顺序)的对象
3、Set 接口存储一组唯一,无序的对象
4、Map接口存储一组键值对象,提供key到value的映射
1)、ArrayList实现了长度可变的数组,在内存中分配连续的空间,遍历元素和随机访问元素的效率比较高
2)、LinkedList采用链表存储方式,插入、删除元素时效率比较高
3)、Set没有get()方法,遍历只能使用增强for循环和Iterator。
二、 ArrayList的常用方法
方法名 说明
int size() 返回列表中的元素个数
boolean add(Object o) 在列表的末尾顺序添加元素,起始索引位置从0开始
void add(int index,Object o) 在指定的索引位置添加元素。索引位置必须介于0和列表中元素个数之间
Object get(int index) 返回指定索引位置处的元素。取出的元素是Object类型,使用前需要进行强制类型转换
boolean contains(Object o) 判断列表中是否存在指定元素
boolean remove(Object o) 从列表中删除元素
Object remove(int index) 从列表中删除指定位置元素,起始索引位置从0开始
三、LinkedList的常用方法
方法名 说明
void addFirst(Object o) 在列表的首部添加元素
void addLast(Object o) 在列表的末尾添加元素
Object getFirst() 返回列表中的第一个元素
Object getLast() 返回列表中的最后一个元素
Object removeFirst() 删除并返回列表中的第一个元素
Object removeLast() 删除并返回列表中的最后一个元素
四、Map的常用方法
方法名 说明
int size() 返回元素个数
Set keySet() 返回键的集合
Collection values() 返回值的集合
Object put(Object key, Object val) 以“键-值”对的方式进行存储
Object get(Object key) 根据键返回相关联的值,如果不存在指定的键,返回null
Object remove(Object key) 删除由指定的键映射的“键-值对”
boolean containsKey(Object key) 如果存在由指定的键映射的“键-值对”,返回true
四、ArrayList 案例
1、创建新闻类
public class NewsTitle {
private int id;
private String name;
private String author;
public NewsTitle() {
super();
}
public NewsTitle(int id, String name, String author) {
super();
this.id = id;
this.name = name;
this.author = author;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
@Override
public String toString() {
return "NewsTitle [id=" + id + ", name=" + name + ", author=" + author
+ "]";
}
}
2、创建测试类,其中包含了ArrayList的各种用法
public class Test {
public static void main(String[] args) {
// 创建三个新闻对象
NewsTitle nt1 = new NewsTitle(1001, "合肥新站区和肥西各新增1例新冠肺炎感染者", "合肥日报");
NewsTitle nt2 = new NewsTitle(1002, "合肥今日有暴雨,局部地区特大暴雨", "张三");
NewsTitle nt3 = new NewsTitle(1003, "震惊,程序员每天竟然喜欢干这件事", "李四");
NewsTitle nt4 = new NewsTitle(1004, "安徽泗县昨日新增新冠肺炎无症状感染者23例", "安徽日报");
// 创建ArrayList类型的集合,默认长度为10
ArrayList al = new ArrayList();
// 将标题对象储存到ArrayList集合当中;
// add为在列表的末尾顺序添加元素,起始索引位置从0开始
al.add(nt1);
al.add(nt2);
al.add(nt3);
al.add(nt4);
// 获取新闻标题的总数----》获取集合中元素的个数
// int size():返回列表中的元素个数
// int size为int类型,所以要创建一个int size来接收;
int size = al.size();
System.out.println(size);
// 可以逐条打印每条新闻标题的名称
// Object get(int index):返回指定索引位置处的元素。取出的元素是Object类型,使用前需要进行强制类型转换
for (int i = 0; i < al.size(); i++) {// 使用for循环
Object obj = al.get(i);
NewsTitle newsTile = (NewsTitle) obj;
System.out.println(newsTile.getId() + "--" + newsTile.getName());
}
// void add(int index,Object o):在指定的索引位置添加元素。索引位置必须介于0和列表中元素个数之间
al.add(0, nt4);
NewsTitle news = (NewsTitle) al.get(0);
System.out.println(news);
// boolean contains(Object
// o):判断列表中是否存在指定元素,如果集合中存在你要找的元素,返回true,否则返回false
boolean result1 = al.contains(nt3);
System.out.println("集合中存在你要找的元素nt3:" + result1);
// boolean remove(Object o):从列表中删除元素,删除成功返回true,删除失败返回false
boolean result2 = al.remove(nt4);
System.out.println("删除元素成功:" + result2);
for (int i = 0; i < al.size(); i++) {
Object obj = al.get(i);
NewsTitle newsTile = (NewsTitle) obj;
System.out.println(newsTile.getId() + "--" + newsTile.getName());
}
System.out.println("---------------");
// Object remove(int index):从列表中删除指定位置元素,起始索引位置从0开始
Object obj = al.remove(0);
NewsTitle newsTile = (NewsTitle) obj;
System.out.println(newsTile);
System.out.println("--------------");
for (int i = 0; i < al.size(); i++) {
Object obje = al.get(i);
NewsTitle newsTilee = (NewsTitle) obje;
System.out.println(newsTilee.getId() + "--" + newsTilee.getName());
}
// clear():清空集合中的所有元素
// al.clear();
// System.out.println(al.size());
// isEmpty():如果此列表中没有元素,则返回 true
// System.out.println(al.isEmpty());
System.out.println("--------------");
// toArray():将集合变成数组
Object[] objs = al.toArray();
for (int i = 0; i < objs.length; i++) {
System.out.println(objs[i]);
}
System.out.println("--------------");
// iterator():迭代器(遍历),将集合中的元素“转移”到了迭代器这么一个容器中,接下来对迭代器容器进行遍历
Iterator it = al.iterator();
// 遍历it这个容器,先使用hasNext()方法判断容器中是否有元素,有,使用next()方法取出,然后再判断,如果有,就取出元素,继续再判断,有,继续取出
// it.hasNext():判断迭代器中是否有元素,如果有元素返回true
while (it.hasNext()) {
// 取出元素
Object object = it.next();
NewsTitle nt = (NewsTitle) object;
System.out.println(nt);
}
System.out.println("--------------------------------------");
for (Object ob : al) {
NewsTitle nt = (NewsTitle) ob;
System.out.println(nt);
}
}
}



