Java初级笔记_集合

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

一、集合(掌握)

(1)集合的由来

我们需要对多个对象进行存储和获取。可以使用对象数组。但是,如果对象的个数是变化的,对象数组就解 决不了了。怎么办呢?java就提供了集合类解决。

(2)集合和数组的区别

A:长度问题

数组长度固定

集合长度可变

B:存储元素类型1

数组只能存储同一种类型

集合可以存储不同类型的对象

C:存储元素类型2

数组可以存储基本类型,也可以存储引用类型。

集合只能存储引用类型。(基本数据类型可以通过包装类来实现在集合中存储)

(3)集合体系

多种集合的数据结构不同,但是,它们有共性的功能。通过不断的向上抽取,最终形成了集合的体系结构。

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

|--Map
|--HashMap
|--LinkedHashMap
|--Hashtable
|--TreeMap

(4)Collection接口的功能:

A:添加功能

add(Object obj)

B:删除功能

remove(Object obj)

C:判断功能

contains(Object obj)

D:获取功能(迭代器)

Iterator iterator()

E:长度

size()

(5)迭代器

A:迭代器其实就是遍历集合的一种方式。

B:使用限制:

迭代器不能单独使用,它依赖于集合而存在。

C:使用步骤

a:通过集合对象调用iterator()方法得到迭代器对象。

     b:通过迭代器对象的hasNext()方法判断是否有元素。

       c:通过迭代器对象的next()获取元素。

D:原理:

是以内部类形式存在的。

(6)案例:(掌握)

集合的使用步骤:

A:创建集合对象

B:创建元素对象

C:把元素添加到集合中

D:遍历集合

a:通过集合对象调用iterator()方法得到迭代器对象。

b:通过迭代器对象的hasNext()方法判断是否有元素。

c:通过迭代器对象的next()获取元素。

存储字符串并遍历:

Collection c = new ArrayList();

String s1 = "hello"; 

String s2 = "world";

String s3 = "java";


c.add(s1);

c.add(s2);

c.add(s3);

Iterator it = c.iterator();

while(it.hasNext()) {

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

System.out.println(s);

}

存储自定义对象并遍历(略)

、List及其子类(掌握)  

           (1)List的特点:  

Collection

|--List:元素有序(存入顺序和取出顺序一致),可重复。  

|--Set:元素无序,唯一。

      (2)List的特有功能

A:添加功能

add(int index,Object obj)

B:删除功能

remove(int index)

       C:获取功能 

get(int index)       

       D:修改功能

set(int index,Object obj)

       (3)案例:

List存储字符串并遍历。

List存储自定义对象并遍历。

使用集合存储自定义对象的步骤:

1、定义要存储到集合当中的类

2、创建集合 集合引用变量 = new 集合();

3、创建要存储到集合当中的类的对象们

4、调用集合方法,存储对应的对象

5、返回对应集合的迭代器

6、使用迭代器判断是否有下个元素

7、如果有下个元素则获取下个元素

     (4)List的三个子类的特点:

|--ArrayList

底层数据结构是数组,查询快,增删慢。

线程不安全,效率高

|--Vector

底层数据结构是数组,查询慢,增删慢。

线程安全,效率低。所以一般不用。

|--LinkedList

底层数据结构是链表,查询慢,增删快。

线程不安全,效率高。

到底使用谁?

是否需要安全:

是:Vector(将来其实也不用这个,会有更好的方式,后面提)

否:用ArrayList或者LinkedList

如何查询多:ArrayList

如果增删多:LinkedList

如果你根本就不知道用谁?

用ArrayList。

     (5)List的三个儿子的各自特有功能:(了解)

A:ArrayList 

B:Vector

JDK1.0时候的功能。但是后来被替代。所以不用掌握。

C:LinkedList

由于是链表,所以,操作开头和结尾比较简答。提高了添加,删除,获取开头或者结尾。

             (6)遍历

Collection:迭代器。

|--List:普通for

|--ArrayList

|--Vector   返回Enumeration

|--LinkedList

            (7)ListIterator(理解)

A:可以逆向遍历,但是要先正向遍历,所以一般不用。

B:可以解决并发修改异常问题。

并发修改异常:在用迭代器遍历集合的时候,通过集合去修改了集合的元素。

 解决方案:

a:通过列表迭代器遍历,通过列表迭代器修改集合。

b:通过集合遍历,通过集合修改集合。  


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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值