一. Collection集合框架的顶级接口UML视图
二. Collection接口
1 集合框架的顶级接口
2 是Set和List的父接口
3 但不是Map的父接口
三.List接口
1 特点:有序、对象可以重复
2 三种遍历方式
2.1 下标
2.2 foreach
2.3 迭代器Iterator
3.初始容量10,负载因子0.5
1.ArrayList集合
连续数据空间存储数据,查询快(下标),增删改慢
2.Vector集合
增删改查都慢
3.LlinkedList集合
以链表结构存储数据,查询慢、增删改快
ArrayList与Array的区别
Array是数组:长度在数组申明时候,就已经确定了;存放的元素也确定了;
ArrayList:长度是可变的;存放元素随意
集合的remove方法与迭代器的remove方法的区别
迭代器删除所有,集合删除指定元素。
会出现的并发异常是因为:两个对象对同一个容器进行操作
使用LinkedList完成一个堆栈 (堆栈先进后出)
// An highlighted block
package com.zhouzhuolin.collection.test;
import java.util.Iterator;
import java.util.LinkedList;
public class Dame1 {
public static void main(String[] args) {
DuiZhan dz=new DuiZhan();
dz.push("a");
dz.push("b");
dz.push("c");
dz.push("d");
dz.bianLi();
}
}
class DuiZhan{
private LinkedList lk=new LinkedList<>();
public void push(Object obj) {
lk.addFirst(obj);
}
public Object pop() {
return lk.removeFirst();
}
public void bianLi() {
Iterator i = lk.iterator();
while (i.hasNext()) {
System.out.println(i.next());
}
}
}
结果
使用LinkedList完成一个队列(队列先进先出)
// An highlighted bloc
package com.zhouzhuolin.collection.test;
import java.util.Iterator;
import java.util.LinkedList;
public class Dame1 {
public static void main(String[] args) {
DuiZhan dz=new DuiZhan();
dz.push("a");
dz.push("b");
dz.push("c");
dz.push("d");
dz.bianLi();
}
}
class DuiLie{
private LinkedList lk=new LinkedList<>();
public void push(Object obj) {
lk.addLast(obj);
}
public Object pop() {
return lk.removeFirst();
}
public void bianLi() {
Iterator i = lk.iterator();
while (i.hasNext()) {
System.out.println(i.next());
}
}
}
结果
ArrayList集合中去除string属性重复
// An highlighted bloc
package com.zhouzhuolin.collection.test;
import java.util.ArrayList;
public class Dame2 {
public static void main(String[] args) {
ArrayList al=new ArrayList<>();
al.add("zs");
al.add("ls");
al.add("ww");
al.add("zs");
al.add("xl");
ArrayList newAll=repeatList(al);
System.out.println(al.size());//输出为5
System.out.println(newAll.size());//输出为4
}
private static ArrayList repeatList(ArrayList al) {
ArrayList newAll=new ArrayList<>();
for (Object object : al) {
if (!newAll.contains(object)) {
newAll.add(object);
}
}
return newAll;
}
}
ArrayList集合中去除对象重复
package com.zhouzhuolin.collection.test;
import java.util.ArrayList;
public class Dame2 {
public static void main(String[] args) {
ArrayList al=new ArrayList<>();
al.add(new person("zs","18"));
al.add(new person("ls","14"));
al.add(new person("ww","12"));
al.add(new person("zs","18"));
al.add(new person("xl","13"));
ArrayList newAll=repeatList(al);
System.out.println(al.size());//输出为5
System.out.println(newAll.size());//输出为4
}
private static ArrayList repeatList(ArrayList al) {
ArrayList newAll=new ArrayList<>();
for (Object object : al) {
if (!newAll.contains(object)) {
newAll.add(object);
}
}
return newAll;
}
}
class person{
private String name;
private String age;
public person(String name, String age) {
this.name = name;
this.age = age;
}
public person() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
@Override
public String toString() {
return "person [name=" + name + ", age=" + age + "]";
}
//重写equals方法
@Override
public boolean equals(Object obj) {
if (obj instanceof person) {
person p=(person) obj;
System.out.println(this.getName() +"---equals---"+p.getName());
//输出为
//ls---equals---zs
//ww---equals---zs
//ww---equals---ls
//zs---equals---zs
//xl---equals---zs
//xl---equals---ls
//xl---equals---ww
return this.getName().equals(p.getName())
&& this.getAge().equals(p.getAge());
}
return false;
}
}