1.集合框架(简介、Collection方法、迭代器)
提供一个api在线文档地址http://tool.oschina.net/apidocs/apidoc?api=jdk-zh(可以直接访问,拿走不谢)。
1.简介
集合框架的由来:数据多了用对象进行存储,对象多了用集合来进行存储。而存储数据的方式(数据结构)各有不同,所以存储的容器也就有多种,从而形成了集合框架这一体系
2.集合的的三种遍历方式(foreach,迭代器)
准备工作:先在主方法中写入
2.2 foreach循环
2.3迭代器
代码运行结果为
附加: 集合的remover方法与迭代器的remover方法有什么区别?
1.先解释集合的remover方法
此处是在迭代器中使用的集合的remover方法
运行之后会有问题,简单的解释就是一个并发问题,it.next()指容器中的指针往下移从而导致了出现 java.util.ConcurrentModificationException
正确写法在迭代器中使用的是迭代器的remover方法
2.集合框架集合框架List(ArrayList特有方法、特有迭代器、具体对象特点、增长因子论证)
1.个人提供的ArrayList方法(特有的add和remove)
在其中可看到add(int index,E element) 和 remover(int index) 方法都是带有一个int类型的参数,可以看到这类的容器是有下标,可以按照下标去取、删除…等等的方式去操作容器的元素
2.特有迭代器(讲解list所特有的方法listIterator)
准备工作:在主方法中写如下代码:
在写一个迭代器如图:
运行结果如下
附加因Arratlist有下标所有提供了从后面向前面便利的代码
必须先从前遍历到后面才能从后面遍历到前面(arraylist遍历的本质是通过箭头其遍历,最开始箭头在最上面,通过从前向后遍历,使的箭头在最下面,在通过向上便利实现从后面开始遍历)
3.具体对象特点、增长因子论证
3.1具体对象的特点
List的三个子类的特点:
①Arraylist:
数组结构 增删慢,查询快 有连续下标 线程不同步 增长因子为1.5 10
② Vector:
数组结构 增删改查都慢 有连续下标 线程同步 增长因子2 10
Vector相对ArrayList查询慢(线程安全的)
Vector相对LinkedList增删慢(数组结构)
③Linkedlist:
链表结构 增删快,查询慢 没有连续下标
3.2增长因子论证
准备工作:在主方法中写入如下代码:
再在主方法外面写一个方法,如下图:
运行结果为
4.集合框架LinkedList
- 通过linkedList集合来制作一个堆栈结构的容器
- 获取制作一个队列制作的结构的容器
先理解LinkedList集合
4.1堆栈(先进后出)
准备工作:在主方法中写入如下代码:
再写一个方法
4.2队列(先进先出)
准备工作:在主方法中写入如下代码:
再写一个方法
5.集合框架ArrayList中的重复元素去重及其底层原理
5.1 元素是字符串
准备工作:在主方法中写人如下代码
再定义一个方法,如图:
运行结果应该为4
5.2 元素是自定义对象
准备工作:在主方法中写入如下代码
再定义一个方法,如下图
class Person{
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Persion [name=" + name + ", age=" + age + "]";
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public Person() {
super();
}
public boolean equals(Object obj) {
Person p = (Person) obj;
// System.out.println(p.name+"---equals---"+this.name);
return p.name.equals(this.name) && p.age == this.age;
}
}
运行完后结果应该是4