您的位置:首页 > 职场人生

黑马程序员_集合总结

2015-08-22 18:36 330 查看
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

集合

|--Collection (两种遍历方式 普通迭代器 增强for循环)

|--方法 add remove clear contains isEmpty size

|--iterator()

1):通过集合对象 (Collection的对象) 调用iterator(),生成迭代器对象

Collection c = new ArrayList()

Iterator it =c.iterator()

2):通过迭代器对象的hasNext()来判断集合是否有下一个元素

3):如果有下一个对象 就通过迭代器对象的next()来获取下一个元素

while(it.hasNext()){

String str =(String)it.next();

System.out.println(str)

}

如果没有下一个对象 再获取的话 报错NoSuchElementException

迭代器的原理:迭代器是一个借口

迭代器的源码:迭代器是通过内部类的形式实现的

|--List:特点 元素有序(存入和取出的顺序相同) 可以重复 可以通过索引操作元素(4种遍历方式 普通迭代器 列表迭代器 增强for普通for)

|--方法:add remove set get indexOf subList

|--ListIterator

ConcurrentModificationException 并发修改异常

①:原因:在通过迭代器遍历集合的时候 我通过集合来操作(增删改)了集合里面的元素

②:解决办法:

A:在迭代器遍历集合的时候,我们通过迭代器来操作元素

ListIterator
列表迭代器

B:普通for循环来遍历集合的时候,通过集合来操作元素

|--ArrayList:底层是数组的数据结构 查询快 增删慢 不安全 效率高

案例:两个ArrayList去除重复自定义对象

|--Vector:底层是数组的数据结构 查询快 增删慢 安全 效率低

|--LinkedList:底层是链表的数据结构 查询慢 增删快 不安全 效率高

|--addFirst addLast removeFirst removeLast get.....

案例:用LinkedList来模拟栈结构

泛型:1)去掉eclipse报黄线问题

2)把运行期类型转换异常 提前到了编译期间

3)优化程序设计

泛型类

泛型方法

泛型接口

注意:泛型是jdk1.5的新特性

增强for循环

注意:增强for是jdk1.5的新特性

|--Set:元素无序(存入和取出的顺序不相同) 唯一 (2种)

|--HashSet

HashSet是如何保证元素唯一性的呢?

HashSet底层是用的哈希表结构

底层依赖两个方法hasCode() equals()

首先判断hasCode()返回值是否相同

相同:判断equals()

true:说明两个对象 相同 咱们就不添加

false:说明两个对象 不相同 咱们就添加

不相同:添加

所以说咱们要让元素所在的类 重写hasCode()和equals()方法

如何重写呢?eclipse直接生成

|--TreeSet

1:自然排序:让TreeSet存储的元素所在的对象实现Comparable接口

通过compareTo()的返回值来保证元素的唯一(排序)

正数:说明咱们要存入的这个元素比上一个元素大 往后放

负数: 说明咱们要存入的这个元素比上一个元素小 往(钱)放

0: 说明重复

public int compareTo(Student s){

int num =this.age-s.age;

int num2 =(num==0)?this.name.compareTo(s.name):num;

return num2;

}

2: 通过比较器:Comparator 调用TreeSet的带参构造方法 传入一个比较器

让TreeSet就按照咱们这个比较器的规则来去掉重复和排序

如果以后我们看到方法上的参数是抽象类或者接口的时候 我们可以考虑用匿名内部类来实现

|--Collections集合的工具类

sort() binarySearch() reverse() shuffle()

|--案例:模拟斗地主发牌游戏

|--Map双列集合 (Map有几种遍历方式 2种)

是存键值对形式的集合 键是不可以重复的 而值可以重复

|--HashMap

底层是哈希表结构 针对键有效 保证Map的键唯一

|--TreeMap

底层是二叉树结构 针对键有效 保证Map的键唯一和排序

案例:获取字符串里面字符出现的次数

Map的嵌套

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: