集合类

集合类

为什么会出现集合类
面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就需要对多个对象进行存储,而想要存储多个对象,就不能是一个基本的变量。而应该是一个容器类型的变量,在我们目前所学过的知识里面,容器类型的有数组和StringBUffer 但是,StringBuffer 的结果是一个字符串,不一定满足要求,所以只能是数组,即对象数组,而对象数组又不能适应变化的需求,因为其长度是固定的,所以java就提供了集合类。

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

数组虽然也可以存储对象,但是长度是固定的,集合的长度是可变的;
数组中可以存储基本数据类型,而集合只能存储对象;
数组存储的是同一种类型的元素,而集合可以存储不同类型的元素。

集合类的特点

集合只能存储对像;
集合长度是可变的;
集合可以存储不同类型的对象。

集合的存储是多员的,但是呢,存储多个元素我们是有不同的需求的,比如说,我要这个多个元素中不能有相同的元素,再比如说,我要这个元素按照某种规则排序一下,针对不同的需求,java就提供了不同的集合类。所以,java提供了很多个集合类,这多个集合类的数据结构不同。结构不同不重要,重要的是要能够存储东西,并且能够使用它们。

Collection 1.2版本
集合的顶层接口,其子体系有重复的,有唯一的,有有序的,有无序的等

Collection

功能描述

添加功能
boolean add(Object obj):添加一个元素
boolean addAll(Collection c); 添加一个集合
删除功能
void clear() ;移除所有元素
boolean remove(Object obj):移除一个元素
boolean removeAll(Collection c) ;移除一个集合的元素,只要有一个被移除,就返回true
修改功能
boolean contains(Object o) 判断集合中是否包含指定的元素
boolean containsAll(Colleation c); 判断集合中是否包含指定的集合元素 全部包含,返回true
boolean isEmpty() 判断集合的元素是否为空
获取功能
Iterator iterator() {重点}
长度功能
int size() 元素的个数
交集功能
boolean retainAll(Collection a)两 个集合中都有的元素,需要注意的是,元素去哪里了<相同的元素去了C1 >,返回的布尔值又是什么意思(true,)
假设有两个集合A和B
A对B做交集,最终的结果保存在A中,B不变
返回值表示A是否发生改变,如果A发生改变,则返回真,如果A 未发生改变,则返回假
把集合转为数组 Object[] toArray()

注意:ColletionXxx.java 使用了未经检查或不安全的操作
注意: 要了解详细的信息,请使用-Xlint:unchecked 重新编译
java编译器认为该程序存在安全隐患,具体分析,等到反泛型

Collection 接口成员方法,把集合转成数组,可以实现集合的遍历。

Iterator iterator()
迭代器 集合的专用遍历方式
获取元素,并移动到下一个位置:Object next()
noSuchElementException 没有这样的元素,因为已经找到最后的元素了
注意:不要多次调用it.next()方法

Student s = (Student) it.next();
System.out.println(s.getName()+"    "+s.getAge());
System.out.println(((Student) it.next()).getName()+"    "+((Student) it.next()).getAge())
//该方法是调用的第一次的名字,第二次的年纪,第三次的名字,第四次的年纪,依次类推

迭代器的原码

public interface Iterable{
    Iterator iterator();
}
public interface Inteator{
    public abstract boolean hasNext();
    public absract Object next();


}
public interface Collection extends Iterator{


}

public interface Collection extends Collection{

}

public class ArrayList implements LIst{
    Iterator iterator();
}
public interface Collection extends Iterable{

}
public interface List extends Collection{

}
public class ArrayList implements List {
    public Iterator iterator(){
    return new Itr();
    }
    private class Itr implements Iterator{
    public boolean hasNext();
    public Object next(){}
    }
}

Collection c = new ArrayList();
c.add("hello");
c.add("world");
c.add("java");

 Iterator it = c.iterator();  //new Itr();
 while(it.hasNext()){
    String s = (String )it.next();
    System.out.plrintln(s);
 }

常见的数据结构

队列
数组
链表

哈希表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值