【Java】对象群体的组织

集合概览

数组的优点
•是Java提供的随机访问对象序列的最有效方法
•是一个简单的线性序列,访问元素的速度较快
•数组的缺点:大小自创建以后就固定了,在其整个生存期内其大小不可改变
•数组元素只能是同一类型

集合(Collection)
•可动态改变其大小
•可在序列中存储不同类型的数据
把具有相同性质的一类东西,汇聚成一个整体
•在Java2中有很多与集合有关的接口及类
•它们被组织在以Collection及Map接口为根的层次结构中,称为集合框架
•在Java2之前,在Java 1.0/1.1中,没有完整的集合框架。只有一些简单的可以自扩展的容器类
•Vector •Hashtable

简单来说,集合就是用来存储对象的容器

由来:
对象用于封装特有数据,对象多了需要存储,如果对象个数不确定,就用集合容器进行存储

特点:

  1. 用于存储对象的容器
  2. 集合长度是可变的
  3. 集合中不可以存储基本数据类型

针对不同用途有不同容器,依据不同的用途用不同的容器

集合容器因为内部的数据结构不同,有多种具体容器。
不断向上抽取,就形成了集合框架。

框架顶层Collection接口

常见方法:

  1. 添加
    boolean add(Object obj);
    boolean addAll(Collection coll);
public static void show(Collection coll){
	coll.add("abc");
	System.out.println(coll);
}
  1. 删除
    boolean remove (Object obj);
    boolean removeAll(Collection coll); //将两个集合中的相同元素从调用removeAll的集合中删除
    void clear();

  2. 判断
    boolean contains(Object obj);
    boolean containsAll(Collection coll);
    boolean ifEmpty();判断集合中是否有元素

  3. 获取
    int size();
    Iterator iterator();取出元素的方式:迭代器

Collection coll = new ArrayList();

coll.add("abc1");
coll.add("abc2");

Iterator it = coll.iterator();
//两种方式:
//第一种方式:
while(it.hasNext()){
	System.out.println(it.next());
}

//第二种方法:
for(Iterator it = coll.iterator();it.hasNext();){
	System.out.println(it.next());
}


该对象必须依赖于具体容器,因为每一个容器的数据结构不同
所以该迭代器对象是在容器内部实现的
对于容器使用者而言,具体的实现不重要,值要通过容器获取到该实现的迭代器对象即可,也就是iterator方法

Iterator接口就是对所有的Collection容器进行元素取出的公共接口

  1. 其他
    boolean retainAll(Collection coll);取交集
    Object[] toArray();将集合转成数组

常用子接口

List和Set

List

有序的collection(也称为序列),此接口的用户可以对列表中每个元素的插入位置进行精准的控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素

与set不同,元素可以重复

特有的常见方法:
有一个共性特点就是可以增加角标

  1. 添加
void add(index,element);
void add(index,collection);
  1. 删除
Object remove(index);
  1. 修改
Object set(index,element);
  1. 获取
Object get(index);

for(int i=0;i<list.size();i++){
	System.out.println(list.get(i));
}



int indexOf(object);
int lastIndexOf(object); 
List sublist(from,to);

在使用迭代器的时候不能进行集合操作,否则会造成并发错误
这时候我们需要使用iterator的子接口listIterator()方法,来完成迭代过程中对集合的操作

有三个常用对象:

  1. Vector:(内部是数组数据结构)可以实现可增长对象数组,Vector大小可以根据需要增大或缩小,以适应创建Vector后进行添加或移除项的操作
  2. ArrayList:内部是数组数据结构,是不同步的。替代了Vector。
  3. Linkedlist:内部是链表数据结构,是不同步的

Set

不包含重复元素,无序。

Map

一次添加一对元素
将键映射到对象,map集合必须保证键的唯一性

  1. 添加
    value put(key,value);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值