死亡笔记2--java中的集合详解

原创 2015年07月10日 11:08:23
集合


集合和数组的区别?


数组:数组既可以储存基本数据类型,也可以储存引用类型.它储存引用类型的数组的时候叫对象数组.数组长度固定,而且只能储存一种类型.
集合:集合只能储存引用类型,但是集合的长度可变,集合可以存储不同数据类型.


集合的集成体系结构?
由于需求不同,java提供了不同的集合类,着多个集合类的数据结构不同,但是他们都是提供供存储和遍历功能的.
我们把他们的共性不断的向上提取,最终就形成了集合的继承体系结构图.


Collection
           |--List
          |--ArrayList
  |--Vector
  |--LinkedList
|--Set
  |--HashSet
  |--TreeSet


java提供了各种集合类,他们的数据结构不同.但是,他们肯定有共性的内容(存储,获取,判断等),通过不断的向上提取,我们就能得到一个集合的继承体系结构,这个体系的老大是:Collection


Collection存储自定义对象并遍历:
public class Student{
private String name;
private int age;
public Student(String name,int age){
this.name=name;
this.age=age;
}
public String toString(){
return name+"----"+age;
}
}   
public class StudentDemo{
public static void main(String[] args){
//创建集合对象
Collection c=new ArrayList();

//创建学生对象,并添加到集合
c.add(new Student("孙悟空",21));
c.add(new Student("猪八戒",20));
c.add(new Student("沙僧",18));
c.add(new Student("唐僧",30));
//遍历结合

Iterator iterator=c.Iterator();
while(iterator.hasNext()){
System.out.println((Student)iterator.next().toString);
}
}
}
迭代器中的并发修改异常:
出现的原因:迭代器遍历集合,集合修改集合元素
解决方案
迭代器遍历:使用List专有的迭代器(ListIterator)
集合遍历:集合修改(size()和get())

常见数据结构:
A:栈 先进后出
B:队列 先进先出
C:数组 查询快,增删慢
D:链表 查询满,增删快

List的子类特点(面试题)
ArrayList:底层数据结构是数组,查询快,增删慢
 线程不安全,效率高
 
Vector:底层数据结构是数组,查询快,增删慢
  线程安全,效率高
  
LinkedList:底层数据结构是链表,查询慢,增删快
  线程不安全,效率低
  
泛型:是一种把明确类型的工作推迟到创建对象或者调用方法的时候才去明确的特殊类型.
也被称作参数化类型,把类型当做参数一样传递

格式:<数据类型>  注意:概述类型只能是引用类型


泛型在那些地方使用呢?
看API,如果类 结构 抽象类后面跟的有<E>就要使用泛型,一般就在集合中使用
好处:把运行时期的问题提前到了编译时期(编译原则)
避免了强制类型转换
优化了程序设计,解决了黄色警告先问题,让程序更安全


泛型的高级通配符:
? 任意的类型都可以
? extends E 向下限定,E及其子类
? super E 向上限定,E及其父类


增强for循环:
是for循环的一种
格式:for(元素的数据类型 变量名:数组或者Collection集合的对象){}
好处:简化了数组和集合的遍历
弊端:增强for循环的目标不能为null,建议在使用前,先判断是否为null值


Set集合:
Set集合的特点:无序,唯一


HashSet:底层数据结构是哈希表(是一个元素为链表的数组)
哈希表底层依赖两个方法:hashCode()和equals()
注意:在添加自定义对象时,HashSet底层以来的是hashCode()和equals()方法,而这两个方法在自定义对象中没有重写,所以默认使用的是Object类中的方法,这个时候他们的哈希值是不会一样的,
所以就不会判断 直接添加.
执行顺序:
首先比较哈希值是否相同
不相同就添加
相同:继续执行equal()方法
返回ture:元素重复了,不添加
返回false:直接把元素添加到集合


如何保证元素的唯一性呢?
由hashCode()和equals()保证的


TreeSet集合:
底层数据结构是红黑树(一种自平衡的二叉树)
保证元素的排列方式:
自然排序:让元素所属的类实现Comparable接口
比较器排序:让集合构造方法接受Comparator的实现类对象


Map集合:
将键映射到值的对象.一个雷蛇不能包含重复的键;每个键最多只能映射到一个值
Map和Collection的区别?
map存储的是键值对形式的元素,键唯一,值可以重复. 夫妻对
Collection存储的是单独出现的元素,子接口Set元素唯一,子结构List元素可重复


Map集合的遍历:
1 键找值  
          获取所有键的集合
 遍历键的集合,得到每一个键
 根据键到集合中去找值
 
2 键值对对象找键和值
     获取所有的键值对对象
 遍历键值对对象的集合,获取每一个键值对对象
 根据键值对对象去获取键和值


Collections工具类:
是针对集合进行操作的工具类
面试题:Collection和 Collections的区别?
Collection是单列集合的顶层接口,有两个子接口List和Set
Collections是针对集合进行操作的工具类,可以对集合进行排序和查找


面试题:List,Set和Map等接口是否都继承自Map接口?
List和Set不是继承自Map接口,他们继承自Collection接口
Map接口本事就是一个顶层接口

死亡笔记的测试,看看你是哪个人?

死亡笔记--很不错,很喜欢看。。。作了下,还基本准确。。。1。如果得到死亡笔记,你的第一反应会是什么? A。兴奋,终于有大展身手的机会了 B。很好玩啊 C。哈哈,可以利用它为自己谋利了 D。好好...
  • Vanessa219
  • Vanessa219
  • 2008年03月24日 13:18
  • 1432

史上最全的Java集合类解析

本文仅分析部分原理和集合类的特点,不分析源码,旨在对java的集合类有一个整体的认识,理解各个不同类的关联和区别,让大家在不同的环境下学会选择不同的类来处理。Java中的集合类包含的内容很多而且很重要...
  • HHcoco
  • HHcoco
  • 2016年11月10日 17:03
  • 16453

java集合(上)——数据结构详解

当我们要处理一串数据的时候,相比较c++和c中的数组和指针,在Java中我们更为常用的是ArrayList、HashMap等集合数据结构。c语言对指针的支持成就了他的深度,而Java中多种多样的包装类...
  • QuinnNorris
  • QuinnNorris
  • 2017年02月08日 14:55
  • 2312

Java中对象的死亡

Java中是通过可达性分析来判定对象是否存活的。这个算法的思路是通过一系列的称为”GC Roots“的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到GC Roots没...
  • LiuXudongHnu
  • LiuXudongHnu
  • 2017年03月16日 22:04
  • 224

java中集合总结

java集合框架:   1. 什么是框架:类库的集合   2.集合框架:用来表示和操作的统一的架构,包含了实现集合的接口与类   3.集合:存放数据的容器 集合框架包含了两部分: 一部分是接...
  • liuzhigang1237
  • liuzhigang1237
  • 2012年02月06日 15:57
  • 4172

哈佛大学公开课《死亡》

下载地址:http://data.movie.kankan.com/movie/65382 目录: 笔记: - 1、二元论,首先身体(body)和灵魂(soul)有一定的互动,如果身体的死亡可以...
  • yzf913214
  • yzf913214
  • 2016年12月15日 12:37
  • 1129

黑马学习笔记_集合

集合常用类和接口介绍 Collection接口  Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些 Coll...
  • dddlinux
  • dddlinux
  • 2015年08月14日 00:17
  • 270

[学习笔记]Java集合框架之Set集合

Set集合 特点 Set集合中的元素是唯一的,不可重复(取决于hashCode和equals方法),也就是说具有唯一性。Set集合中元素不保证存取顺序,并不存在索引。 继承关...
  • jacobvv
  • jacobvv
  • 2014年12月14日 22:45
  • 2094

Java中的Map集合详解

一、概述  java中的map集合使用key-value映射来保存数据,其中value值可以重复,但key必须是唯一,也可以为空,但最多只能有一个key为空,它的主要实现类有HashMap、Linke...
  • Hchengbowen
  • Hchengbowen
  • 2016年04月30日 12:36
  • 2578

黑马程序员JAVA笔记2--java基础语法

------- android培训、java培训、期待与您交流! ---------- 一、Java语言基础组成 Java语言基础由关键字、标识符、注释、常量和变量、运算符、语句、函数和数组等组成...
  • free_stars_sword
  • free_stars_sword
  • 2015年06月20日 17:01
  • 233
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:死亡笔记2--java中的集合详解
举报原因:
原因补充:

(最多只允许输入30个字)