
目录
一、UML:统一建模语言
二、Collection接口三、List接口1、特点:有序、对象可以重复
2、遍历方式
3、List元素删除
4、List优化
5、通过Linkedlist实现队列以及堆栈的容器
一、UML
UML:统一建模语言
二、Collection接口
1、集合框架的顶级接口
2、是Set和List的父接口
3、但不是Map的父接口
三、List接口
1、特点:有序、对象可以重复
1.1 有序:
打印结果为:
1.2 对象可以重复:
ArrayList list=new ArrayList<>();
//新增
list.add(new Preson("zs",19));
list.add(new Preson("pzd",20));
list.add(new Preson("王心凌",41));
list.add(new Preson("ls",23));
list.add(new Preson("老六",25));
list.add(new Preson("王心凌",41));
System.out.println(list);
ArrayList listnew=new ArrayList<>();
for (Object object : list) {
if(!listnew.contains(object)) {
listnew.add(object);
}
}
System.out.println(listnew);//5个
}
打印结果为:
那么如何去重复呢?
* list集合去重底层原理
* 结论:去重引用对象时,底层调用的是对象的equals方法
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Preson other = (Preson) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
结果如下:
2、遍历方式
2.1 下标遍历 for循环
2.2 foreach
2.3 迭代器
打印结果都为:
3、List元素删除
3.1 List集合的删除
//删除
Object obj2 = list.remove(1);//返回值是删除的元素
list.remove("ww");
System.out.println(obj2);
System.out.println("------------------------");
for (Object obj : list) {
System.out.println(obj);
}
3.2 List集合的删除 倒序删除
3.3 List集合的删除 迭代器
4、List优化
List 实现类 ArrayList实际就是一个Object数组
list集合如何进行优化
* 当代码中出现了多次add操作,涉及到了list集合容量多次改变,这是十分耗性能的操作,此时通过初始化容量,即可优化性能
* 增长因子
*
* list集合长度是可变的,数组长度是不可变的
* 结论1:list集合底层的数据结构是数组
* 结论2:增长因子0.5,初始化容量10
// String[] arr = new String[10]; // arr = new String[11]; // arr[11] = "zs"; // arr = new String[12]; // arr[12] = "zs"; ArrayList
5、通过Linkedlist实现队列以及堆栈的容器
public static void main(String[] args) {
//Duilie duilie=new Duilie(new LinkedList<>());
Duizhan duilie=new Duizhan(new LinkedList<>());
duilie.push("zs");
duilie.push("ls");
duilie.push("ww");
duilie.push("八戒");
System.out.println(duilie.pop());
System.out.println(duilie.pop());
System.out.println(duilie.pop());
System.out.println(duilie.pop());
}
}
class Duilie{
private LinkedList ll;
public Duilie(LinkedList ll) {
super();
this.ll = ll;
}
//存
public void push(Object obj) {
ll.add(obj);
}
//取
public Object pop() {
return ll.remove();
}
}
class Duizhan{
private LinkedList ll;
public Duizhan(LinkedList ll) {
super();
this.ll = ll;
}
//存
public void push(Object obj) {
ll.add(obj);
}
//取
public Object pop() {
return ll.removeLast();
}
}
堆栈:现进后出
队列:先进先出
集合框架:
集合框架(List)就分享到这了,希望能对大家有所帮助!