黑马程序员_集合框架Collection

集合框架概述:

为什么出现集合类?

面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就要对对象进行存储,集合就是存储对象最常用的一种方式。

数组和集合类同是容器,有何不同?

数组虽然也可以存储对象,但长度是固定的;集合长度是可变的。数组中可以存储任意数据类型,集合只能存储对象。

集合类的特点

集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。

集合框架的构成及分类


为什么会出现这么多的容器呢?

因为每一个容器对数据的存储方式都有不同,这个存储方式称之为:数据机构。

两大接口

Java集合类主要由两个接口派生出来:CollectionMap

一、Collection接口

Collection

|--List:有序(元素存入集合的顺序和取出的顺序一致),元素都有索引。元素可以复。

|--Set:无序(存入和取出顺序有可能不一致),不可以存储重复元素。必须保证元素唯一性。

Collection类的常见方法:

1,添加:

add(object):添加一个元素

addAll(Collection) :添加一个集合中的所有元素。

注意:add方法的参数类型是Object;以便于接收任意类型对象。集合中存储的都是对象的引用(内存地址)而不是存储对象

2,删除:

clear():将集合中的元素全删除,清空集合

remove(obj) :删除集合中指定的对象。注意:删除成功,集合的长度会改变。

removeAll(collection) :删除部分元素。部分元素和传入Collection一致。

3,判断:

boolean contains(obj) :集合中是否包含指定元素 。

boolean containsAll(Collection) :集合中是否包含指定的多个元素。

boolean isEmpty():集合中是否有元素。

4,获取:

int size():集合中有几个元素。

5,取交集:

boolean retainAll(Collection) :对当前集合中保留和指定集合中的相同的元素。如果两个集合元素相同,返回flase;如果retainAll修改了当前集合,返回true。

6,获取集合中所有元素:

Iterator iterator()迭代器

7,将集合变成数组:

toArray();

例子:

需求:创建一个集合容器。使用Collection接口的子类:ArrayList,使用常见的方法

import java.util.*;

public class ab {

public static void main(String[] args) {

Collection<String> C1 = new ArrayList<String>();

//1,添加元素

C1.add("A");

C1.add("B");

C1.add("C");

C1.add("D");

C1.add(new Date());上面写了泛型,这个语句就是错误的了,因为泛型规定了加进来的类型!

System.out.println(c);

//打印原集合。

System.out.println ("原集合:"+al);//输出结果为:[A,B,C,D]不用遍历

2,获取个数。集合长度。

System.out.println ("size:"+al.size());

3,删除元素。

al.remove("java02");

al.clear();//清空集合

4,判断元素。

System.out.println ("java03是否存在:"+al.contains("B"));

System.out.println ("集合是否为空?"+al.isEmpty());

6,取交集

ArrayList<String> C2= new ArrayList<String> ();

C2.add("A");

C2.add("B");

C2.add("E");

C2.add("F");

C1.retainAll(C2);//取交集,al1中只会保留和al2中相同的元素

System.out.println ("al1:"+al1);//[A,B]

System.out.println ("al2:"+al2);//[A,B,C,D]

}

}

Iterator接口

迭代器:是一个接口。作用:用于取集合中的元素。

boolean hasNext():若被迭代的集合元素还没有被遍历,返回true.

Object next():返回集合的下一个元素.

注意:next方法返回值类型是Object,所以要记得类型转换。(学到泛型就可以消除强转!)

void remove():删除集合上一次next()方法返回的元素。(若集合中有多个相同的元素,都可以删掉)

每一个集合都有自己的数据结构,都有特定的取出自己内部元素的方式。为了便于操作所有的容器,取出元素。将容器内部的取出方式按照一个统一的规则向外提供,这个规则就是Iterator接口

因为Collection中有iterator方法(被定义为内部类),所以每一个子类集合对象都具备迭代器。

也就说,只要通过该接口就可以取出Collection集合中的元素,至于每一个具体的容器依据自己的数据结构,如何实现的具体取出细节,这个不用关心,这样就降低了取出元素和具体集合的耦合性。

例子:

Iterator it = l.iterator();

while(it.hasNext()){

System.out.println(it.next());

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值