学习内容:
集合:
1.List:存储有序的,可重复的元素。
2.Set:存储是无序的,不允许重复元素。
3.集合List<T>,及其子类ArrayList<T>,LinkedList的使用
明白其来源及其存储方式
集合的结构
List,ArrayList(线性有序存储方式),LinkedList(线性有序链表存储方式)存储的是引用类型的引用,在使用remove(Object obj)时,系统先调用一个equals(obj)方法【如果类A做泛型参数,且A中重写了Object的equals方法,则调用A中的equals方法,否则调用Object的equals方法】,判定引用值是一样的,则返回true,删除成功,否则删除不成功
ArrayList常用方法:add(int index,Object obj);在下标为index的地方添加obj。add(Object obj);在结尾处添加obj,在中间插入元素时,插入位置之后的元素都会移动
LinkedList常用方法于ArrayList类似,比他多了在last,first位置添加删除元素,在中间插入元素时,所有元素的下标跟着变化,元素位置不会移动
运行效率比较:
运行效率 |
ArrayList |
LinkedList |
存储方式 |
线性有序 |
链式有序 |
随机添加 |
慢 |
快 |
遍历 |
快 |
慢 |
末尾添加 |
快 |
慢 |
import java.util.ArrayList;
public class StaffManagement {
ArrayList<Staff> list = new ArrayList<Staff>();
static Staff wang = new Staff("汪洋", '男',2);
public static void main(String[] args) {
StaffManagement management = new StaffManagement();
management.list.add(new Staff("刘涛", '男',1));
management.list.add(new Staff("谎言", '男',2));
management.list.add(new Staff("蒸菜", '女',3));
management.list.add(new Staff("主犯", '女',4));
management.list.add(new Staff("宏兴", '女',5));
for (int i = 0; i < management.list.size(); i++) {
System.out.println("名字:"+management.list.get(i).getName()+"\t性别"+management.list.get(i).getSex()+"\t编号:"+management.list.get(i).getId());
}
//删除
Staff sta = new Staff("校长", '女',3);
if(management.delete(sta)){
System.out.println("删除成功");
}else{
System.out.println("删除失败");
}
for (int i = 0; i < management.list.size(); i++) {
System.out.println("名字:"+management.list.get(i).getName()+"\t性别"+management.list.get(i).getSex()+"\t编号:"+management.list.get(i).getId());
}
management.add(sta);
System.out.println("添加成功");
for (int i = 0; i < management.list.size(); i++) {
System.out.println("名字:"+management.list.get(i).getName()+"\t性别"+management.list.get(i).getSex()+"\t编号:"+management.list.get(i).getId());
}
System.out.println("所在位置:"+management.find(sta));
}
//添加
public void add(Staff staff){
list.add(staff);
}
//删除
public boolean delete(Staff staff){
if(find(staff) != -1){
list.remove(staff);
return true;
}
return false;
}
//改
public void alter(Staff staff){
int place = find(staff);
if(place != -1){
list.set(place, wang);
}
}
//查
public int find(Staff staff){
int index = list.indexOf(staff);
return index;
}
}