黑马程序员___集合1
来源:互联网 发布:淘宝交易成功数据 编辑:程序博客网 时间:2024/06/07 16:53
------- android培训、java培训、期待与您交流! ---------
-集合Collecton
一.为什么要使用集合如果有以下的要求:
有一个班级的学生,考试成绩,姓名,和学号
张三 100 90
李四 005 87
采用数组存储
对象数组 存储的是引用数据类型
class Student{
String name;
String id;
int score;
Student(name,id,score){
this.......
}
}
数组定义 Student[] stu = {new Student("张三","004",88)};
数组的长度怎么办,
因此在JDK1.2 出现了集合框架;
集合与数组的明显区别:
数组是定长的,集合是变长的;
数组可以存储对象,也可以存储基本数据类型;
集合只能存储对象;
集合最顶层的接口Collection
Collection很重要的两个子接口List和Set等等;
List很重要的实现类:ArrayList LinkList Vactor等等,
二.集合的迭代器;
迭代器就是取出集合中存储对象的一种方式,与遍历数组很像;集合中所有的类都有此方法;
使用迭代器取出集合中存储对象的步骤:
第一步,使用集合中的方法iterator()获取Iterator接口对象(内部类对象),获取迭代器
第二步,使用迭代器对象的hasNext()方法判断集合中,有没有对象可以被取出
第三步,使用迭代器对象的next()方法,获取集合中对象
需要注意的是
1 使用迭代器的过程中,出现了一个异常
java.util.ConcurrentModificationException--并发修改异常
在迭代器迭代集合的过程中,不能使用集合的方法,改变集合的长度 add remove clrea
2当迭代器已经移动到了最后一位,再次使用next方法获取,出现
Exception in thread "main" java.util.NoSuchElementException--没有元素被取出异常
3 对于List派系有特有的ListIterator接口
对于这个特有的迭代器,可以正向遍历集合,也可以逆向遍历几个,并且在整个遍历过程中,
可以对几个进行修改,包括增加,删除.
正向遍历的 逆向遍历
hasNext() hasPrevious()
next() previous()
三.List派系特点,ArrayList集合特点
List接口: 允许重复,有下标,有序的,存储和取出顺序一致
ArrayList:底层是什么可变数组,大小10个位置
增长50%,线程不安全,查询块,增删慢
LinkedList底层数据结构,链表数据结构
查询慢,增删快
线程不安全,执行效率高
import java.util.*;
public class ArrayListTest {
public static void main(String[] args) {
ArrayList array = new ArrayList();
array.add(new Person("zhangsan",19));
array.add(new Person("zhangsan",19));
array.add(new Person("lisi",17));
array.add(new Person("lisi",17));
array.add(new Person("lilei",21));
method(array);
}
//定义方法,实现List集合的去掉重复,并返回去掉重复后的集合
public static ArrayList method(ArrayList array){
//定义新的集合
ArrayList newList = new ArrayList();
//迭代老集合
Iterator it = array.iterator();
while(it.hasNext()){
//取出老集合中的元素
Object obj = it.next();
//取出的元素,去新集合中判断是否存在
if(!newList.contains(obj))
//不包含的元素,存储到新集合
newList.add(obj);
}
return newList;
}
}
四 泛型简介
泛型是什么,JDK1.5版本后出现的安全机制
A. 将运行时期的问题,提前到了编译时期
编译时期,是程序人员看到了,运行的时期是用户看到了
B. 泛型的出现,避免了类型的强制转换,代码量减少
C. 泛型定义格式
集合类<数据类型> 变量 = new 集合类<数据类型>();
前后的数据类型,保持一致
在JDK1.7版本后,后面的泛型<>省略不写,菱形◇语法
D. 看到一个类的右边,写了<T> 必须指定泛型
------- android培训、java培训、期待与您交流! ----------
0 0
- 黑马程序员___集合1
- 黑马程序员___集合2
- 黑马程序员___迭代器
- 黑马程序员___接口
- 黑马程序员___网络通讯
- 黑马程序员___异常学习心得
- 黑马程序员___交通灯学习心得
- 黑马程序员___求解多项式
- 黑马程序员___构造函数
- 黑马程序员___ final关键字
- 黑马程序员___数组排序
- 黑马程序员___多态的学习心得
- 黑马程序员___单例设计模式
- 黑马程序员___交通灯管理系统
- 黑马程序员___银行业务调度系统
- 黑马程序员___基本数据类型,标识符
- 黑马程序员___运算符,if,switch
- 黑马程序员___关于多态
- 23中设计模式
- 我们为何离职???
- cxf + spring 的WS-Security示例(一)
- 8路彩灯显示系统
- [ffmpeg] clip video & audio
- 黑马程序员___集合1
- python函数注意事项-参数的改变
- 快速枚举
- 一步一步写makefile
- 16.2
- 金正康健公司面试题
- 网络体系结构
- cxf + spring 的WS-Security示例(二)
- TCP和UDP的"保护消息边界" 机制