黑马学习日记11

来源:互联网 发布:java自学能学会吗 编辑:程序博客网 时间:2024/05/18 13:26

黑马程序员-学习日记11

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------


 集合:java语言是面向对象的语言,对事物的体现都是以对象存在的。我们要对多个对象进行存储和操作,以前只能用数组,而数组有弊端,长度固定。所以有了新的容器集合供我们使用
集合和数组的特点:
1.相同点:
       集合和数组都一个容器。
2.集合:
    1,可以存储对象,只能存储对象。
    2,集合的长度的是可变的。
3.数组:
    1,可以存储对象,也可以存储基本数据类型值。
    2,数组长度的是固定的。
二 :集合体系结构:
由于数据结构不同,那么,就会有多种集合存在。
而这多种集合又有共性的内容,通过不断的向上抽取,
最终形成了集合的继承体系结构图:
Collection
|--List
|--ArrayList
|--Vector
|--LinkedList
|--Set
|--HashSet
|--TreeSet
如何学习和使用一个体系?
A:学习顶层,顶层定义的是体系的共性内容。
B:使用底层,底层是具体的实现。
2.2:List的3个儿子(掌握) (1)List:元素有序,可重复
|--ArrayList
底层数据结构是数组,查询快,增删慢.
线程不安全,效率高
|--Vector
底层数据结构是数组,查询快,增删慢.
线程安全,效率低
|--LinkedList
底层数据结构是链表,查询慢,增删快.
线程不安全,效率高
什么时候用谁?
线程安全:
是:Vector
否:ArrayList,LinkedList
查询多:ArrayList
增删多:LinkedList
如果你什么都不懂,就用ArrayList。
加入泛型,并遍历。
(2)ArrayList存储字符串和自定义对象并遍历。
(3)LinkedList存储字符串和自定义对象并遍
三:
  1;迭代器:集合的一种常用的遍历方式。
           通过集合获取到迭代器对象。
        然后通过hasNext()和next()方法配合使用
    例如: ArrayList a1=new  ArrayList();
           Iterator it=a1.iterator();
            while(it.hasNext())
              {
                  it.naxt();
                   }
2: 增强for(掌握) (1)一种简单的遍历数组或者    Collection集合的方式。
 (2)格式:
for(数组或者Collection集合中的元素类型 变量 : 数组或者Collection集合)
{
使用变量即可.
}
注意:
只适合遍历数据,被他用作目标的对象不能使null。
 四:Set(掌握) (1)无序(元素的存储和取出顺序),唯一。
(2)Set体系图
Set
|--HashSet
底层数据结构是哈希表。
唯一,无序。
怎么保证唯一性的?
依赖两个方法:hashCode()和equals()
首先判断hashCode()是否相同:
同:继续比较equals()方法
如果true:说明元素存在。
如果false:就直接添加。
不同:就直接添加。
|--LinkedHashSet
底层数据结构是哈希表和链表。
唯一,有序。
由哈希表保证唯一。
由链表保证有序。
|--TreeSet
底层数据结构是二叉树。
唯一,有序。
怎么保证唯一性的?
根据自然排序或者比较器返回的值是否是0。
两种实现方案:
A:元素具备比较性 实现Comparable接口 自然排序
B:集合具备比较性 实现Comparator接口 比较器
一般推荐使用B方案。
五:
  Collection和Collections的区别?
  前者是集合的顶层接口,里面定义了集合的常见功能。
  后者是对集合操作的工具类,里面定义了排序查找等功能。

0 0
原创粉丝点击