数组:适用于固定不变的
集合:不断变化的数据,增删频繁数据
集合框架的体系结构:
Collection :类的对象
Map:键值对
List:
List是元素有序并且可重复的集合,称为序列
List可以精确的控制每个元素的插入位置,或删除某个位置的元素
List的两个主要实现类是 ArrayList和LinkedList
ArrayList:
ArrayList底层是由数组实现的
动态增长,以满足应用程序的需求
在列表尾部插入或删除数据非常有效
更适合查找和更新元素
ArrayList中的元素可以为null
ArrayList的增删改查:
package object;
import java.util.ArrayList;
import java.util.Date;
public class NoticeTest {
public static void main(String[] args) {
/**
* ArrayList的增删改查操作
*/
//创建对象,生成三条公告
Notice notice1=new Notice(1,"大家好","管理员1",new Date());
Notice notice2=new Notice(2,"大家好s","管理员2",new Date());
Notice notice3=new Notice(3,"大家好ss","管理员3",new Date());
//添加公告
ArrayList noticeList=new ArrayList();
noticeList.add(notice1);
noticeList.add(notice2);
noticeList.add(notice3);
//显示公告
for (int i=0;i<noticeList.size();i++){
System.out.println(i+1+":"+((Notice)(noticeList.get(i))).getTitle()+"我是:"+((Notice)(noticeList.get(i))).getCreator());
}
//删除公告元素
noticeList.remove(notice3);
//显示公告
for (int i=0;i<noticeList.size();i++){
System.out.println(i+1+":"+((Notice)(noticeList.get(i))).getTitle()+"我是:"+((Notice)(noticeList.get(i))).getCreator());
}
//更改公告元素内容
notice1.setCreator("我是更新后的哦!");
noticeList.set(0,notice1);
//显示公告
for (int i=0;i<noticeList.size();i++){
System.out.println(i+1+":"+((Notice)(noticeList.get(i))).getTitle()+"我是:"+((Notice)(noticeList.get(i))).getCreator());
}
}
}
Set:set是元素无序并且不可以重复的集合,被称为集
HashSet是Set的一个重要实现类,称为哈希集。
HashSet中的元素无需并且不可重复(当对对象进行添加是时记得重写 HashCode和equals方法)
HashSet中只允许一个null
具有良好的存取和查找性能
其底层是HashSet来实现
Iterator(迭代器)
Iterator接口可以统一的方式对各种集合元素进行遍历
hasNext()方法检测集合中是否还有下一个元素
next()方法返回集合中的下一个元素
package object;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class SetTest {
public static void main(String[] args) {
Set set=new HashSet();
set.add("a");
set.add("b");
set.add("c");
set.add("d");
//展示集合数据
Iterator it=set.iterator();
//遍历迭代器并输出元素
while(it.hasNext()){
System.out.print(it.next()+" ");
}
System.out.println();
//插入重复元素不会报错 相比于数组可以减少一些判断处理
set.add("a");
it=set.iterator();
while(it.hasNext()){
System.out.print(it.next()+" ");
}
}
}