集合详解(1)集合的简单介绍

1.1集合的简介

开发和学习中需要时刻和数据打交道,如何组织这些数据是我们编程中重要的内容。我们一般通过 “容器”来容纳和管理数据。事实上,数组就是一种容器,可以在其中放置对象或基本类型数据。

数组的优势:是一种简单的线性序列,可以快速的访问数组元素,通过索引获取元素效率非常高。

数组的劣势:不灵活!容量事先定义好,不能随着需求的变化而扩容,并且插入和删除操作效率非常低。

比如:我们在一个用户管理系统中,要把今天注册的所有用户取出来,那么这个用户有多少个?我们在写程序时是无法确定的。因此,也就不能使用数组。

由于数组远远不能满足我们对于“管理和组织数据的需求”,所以我们需要一种更强大、更灵活的,容量随时可扩的容器来装载我们的对象。 这就是我们今天要学习的容器或者叫集合,集合存储的数据必须是引用类型数据。(其实我个人觉得ArrayLis和Vector就是给数组披了一层皮,方便对数组进行各种操作,说快,快个锤子哦,只是不用自己动手当然好啦,白嫖才是王道,对了Vector是线程安全的,被那个很长的单词修饰(synchronized),ArrayList不是,)

ArrayList是一种常见的集合,我们可以使用ArrayList集合来管理和组织数据

试例:

// 1.创建ArrayList集合对象

ArrayList list = new ArrayList();

// 2.通过add(obj)方法,添加元素

list.add(111); // 自动装箱

list.add(222);

list.add(333);

// 3.遍历数组

// 3.1通过size()方法,获取元素个数

for(int i = 0; i < list.size(); i++) {

    // 3.2通过get(index)方法,获取元素的值

    System.out.println(list.get(i));

}

1.2集合的继承关系

查看ArrayList源码,我们发现它继承了抽象类 AbstractList同时又实现了接口List,而List接口又继承了Collection接口。因此,Collection接口可以说是集合的祖宗接口。

 ArrayList 继承于AbstractList抽象类并实现了List接口

这说明我们在使用 ArrayList 类时,该类已经把所有抽象方法进行了重写。那么,实现 Collection接口的所有子类都会进行方法重写。

Collection接口位于java.util包中,常用的派生接口是List接口和Set接口:

(1)List常用的子类有:ArrayList类、LinkedList类、Vector类

(2)Set常用的子类有:HashSet类、LinkedHashSet类、TreeSet类

(兄弟们看下边,就这个图(网上趴的,居然没Vector,不玩了,哼))

1.3Collection接口

既然 Collection 接口是集合中的顶层接口,那么 Collection 接口中定义的方法子类都可以使用。查询API,发现 Collection 接口中很多集合的操作方法,那么这些方法都具体能做什么呢?

方法名

描述

int size();

容器中元素的数量。

boolean isEmpty();

容器是否为空。

boolean add(Object o);

增加元素到容器中。

boolean addAll(Collection c);

将容器c中所有元素增加到本容器。

boolean remove(Object o);

从容器中移除元素。

boolean removeAll(Collection c);

移除本容器和容器c中都包含的元素。

boolean retainAll(Collection c);

取本容器和容器c中都包含的元素,移除非交集元素。

boolean contains(Object o);

容器中是否包含该元素。

boolean containsAll(Collection c);

本容器是否包含c容器所有元素。

Iterator iterator();

获得迭代器,用于遍历所有元素。

Object[] toArray();

把容器中元素转化成Object数组。

(一个一个给大家试下):

// 1.创建集合
Collection coll = new ArrayList();
// 2.往集合中添加对象元素
coll.add("111");
coll.add("222");
coll.add("333");
System.out.println(coll); // 输出:"[111, 222, 333]"
// 3.从集合中删除元素
coll.remove("111");
System.out.println(coll); // 输出:"[222, 333]"
// 4.判断集合中是否包含指定元素
System.out.println(coll.contains("222")); // 输出:true
// 5.获取集合元素个数
System.out.println(coll.size());  // 输出:2
// 6.返回包含集合中所有元素的数组
Object[] arr = coll.toArray(); // 数组中结果为:[222, 333]
// 7.清除集合元素
coll.clear(); // 清空后,集合元素为[],代表没有元素

(好啦,今天就写这么多)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值