集合框架之list
目录
1.list的特点
2.List遍历三种方式&LinkedList实现队列堆栈
3.增长因子论证&list集合优化
4.list集合去重原理
5.UML
1.list的特点(有序性,可重复性,长度随着包含对象多少而改变)
1. 增加
List<String> list = new ArrayList<String>();
list.add(object obj)
这里就可以看出list具有有序性和可重复性
2. 删除
List<String> list = new ArrayList<String>();
list.remove(object obj);
如果obj为数字那么返回的是对应的对象
如果obj是下标则返回的是boolean类型
这list长度随着包含对象多少而改变
3.修改
List<String> list = new ArrayList<String>();
list.set(int n,object obj)
n是下标,obj为修改内容
4.查询
List<String> list = new ArrayList<String>();
list.get(int n)
n为下标返回的是对应下标的对象
2.List(查询修改快)遍历三种方式&LinkedList(增加删除快)实现队列堆栈
list遍历
LinkedList队列堆栈
队列
ss DuiLie {
LinkedList<String> list = null;
public DuiLie(LinkedList<String> list) {
this.list = list;
}
// 取出元素的方法
public String pop() {
return list.removeFirst();
}
先增加进去就先输出出来
堆栈
class DuiZhan {
LinkedList<String> list = null;
public DuiZhan(LinkedList<String> list) {
this.list = list;
}
// 取出元素的方法
public String pop() {
return list.removeLast();
}
}
先增加进去就最后输出出来(反向输出)
3、增长因子论证&list集合优化
增长因子论
ArrayList集合的底层是数组结构,是可变数组,一旦超过默认数组大小就会自动扩容增长为原来的1.5倍增长因子为0.5
这里我们看到控制台中当list的长度为9就要超过默认的底层数组长度时数组长度变成了15
public static void main(String[] args) {
ArrayList list = new ArrayList<>(30);
for (int i = 0; i < 50; i++) {
System.out.print(i);
list.add(i);
try {
printElementDataLength(list);
} catch (Exception e) {
e.printStackTrace();
}
}
}
private static void printElementDataLength(List<String> list) {
try {
Field f = list.getClass().getDeclaredField("elementData");
f.setAccessible(true);
Object[] elementData = (Object[]) f.get(list);
System.out.println("目前list集合底层储存数据的数组长度" + elementData.length);
} catch (Exception e) {
e.printStackTrace();
}
}
集合优化
ArrayList list = new ArrayList<>(30);
直接修改底层容器的默认长度来减少扩容次数达到优化集合的目的
4、list集合去重原理
eclipse当中==判断的时对象的地址
eclipse当中equals判断的时对象的内容
list集合去重复的原理
该图stu类没有重写equals方法系统默认调了==的方法
该图为stu类没有重写equals方法系统调用了重写的equals的方法
UML
类图的概念
描述类、接口及它们之间关系的图,显示系统中各个类的静态结构
更多详情