Java泛型集合结构,List,及其子类ArrayList,LinkedList的使用

时间:2020-12-20 19:39:47

学习内容:

集合:

1.List:存储有序的,可重复的元素。

2.Set:存储是无序的,不允许重复元素。

3.集合List<T>,及其子类ArrayList<T>,LinkedList的使用

明白其来源及其存储方式

集合的结构

Java泛型集合结构,List<T>,及其子类ArrayList<T>,LinkedList<T>的使用Java泛型集合结构,List<T>,及其子类ArrayList<T>,LinkedList<T>的使用

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

存储方式

线性有序

链式有序

随机添加

遍历

末尾添加

代码:用ArrayList实现增删改查的操作

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;
}
}