集合的由来

集合的由来:

我们学习的是面向对象编程,而面向对象语言对事务的表现是通过对象来体现的,为了方便管理对多个对象进行操作,我们就将将这多个对象存储到一个容器当中,在我们目前所有学的知识体现当中,基础到的容器只有数组和StringBuffer,但是呢?StringBuffer的结果是一个字符串,不能满足存储对象的要求,所以我们只能用数组,但是数组的长度是固定的,不可能满足我们灵活多变的需求,这个时候,为了适应程序的开发,Java提供了一种技术。

这种技术叫做:集合

集合和数组的区别?

1.长度区别

数组的长度是固定

集合的长度是可变的

2.内容区别

数组只能存储同一种数据类型的元素

集合存储不同数据类型的元素

3.类型区别

数组既能够存储基本数据类型,也能够存储引用数据类型

集合只能存储引用数据类型

刚说了,集合是可以存储多个元素,但是 存储多个元素我们也可能有不同需求,比如说,我需要存储这个元素的不同内容 怎么办。

Collection:是集合类的顶层接口,他的子体系是有重复的、有唯一的、有排序的、有无序的。

Collection的功能:

添加功能:

c.add(Object obj):添加一个元素

c.addAll(Collection c):添加一个整个集合的元素(放的一个集合对象)

删除功能:

c.clear();清除集合当中的所有元素

c.remove(Object obj):移除指定元素

c.removeAll(Collection c):移除指定的集合元素

判断功能:

c.contains(Object obj):判断集合中是否存在某个元素

c.containsAll(Collection c):判断集合当中是否存储了指定的集合

获取功能:

Interface Iterator(重点)

长度获取

c.size() 获取集合长度

面试题:

数组有么有length()方法? 没有,只有成员变量。

字符串有么有length方法()?有

集合当中有没有length方法?没有

交集功能:

retainAll(Collection c):两个集合,保留进行交集的元素值

将集合转换为数组:

Object [] obj = (Object[])c.toArray();

创建迭代器,因为迭代器是一个接口 所以不能实例化

如果需要实例化则需要通过具体实现子类来完成

而我们的集合就正好有迭代器的具体对象返回 c.iterator();

Iterator it = c.iterator();

我们现在使用的循环次数是不确定,所以it.hasNext()可以判断你这个迭代器里面是不是有更多元素

如果有,就返回true 没有了就不用进行循环 返回的是false

while(it.hasNext()) {

it.next();可以获取迭代器里面的下一个具体元素

//获取的是一个对象的具体地址值 将这个地址值赋值给对应类型进行接收即可

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

}

list集合的特点:

有序的(存储的顺序和取出的顺序是一致的),可重复

List的特有功能:

1.添加功能

void add(int index, E element):在列表中指定的位置上插入指定的元素(可选操作)。

2.获取功能

Object get(int index):返回此列表中指定位置的元素。

3.列表迭代器

ListIterator():列表迭代器,很少使用

4.删除功能

Object remove(int index):根据指定索引删除元素

5.修改功能

Object set(int index,Object e):根据指定索引替换指定内容

ConcurrentModificationException:当检测到对象有并发行为时,

不允许修改这个对象时,所触发的异常

List list = new ArrayList();

String s = (String)list.get(i);

ArrayList:

底层的数据结构为数组,查询快 增删慢

线程不安全,效率高

LinkedList:

底层的数据结构为链表,查询慢,增删快

线程不安全,效率高

Vector:

底层数据接口是数组,查询快 增删慢

线程安全,效率低

List子类的区别:

List的三个儿子,我们一般使用谁?

查询多:ArrayList / Vector

要安全吗:Vector(即使安全也不用 因为被淘汰)

如果懒得选,就直接用ArrayList 其余几个很少用到

注意:

如果你的变量是Object类型 ,所用的equals方法需要被重写。

因为在object类中的 ,equals方法是对比它们的地址是否相同。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值