JavaSE:集合

目录

集合的概念

集合继承结构

常用实现类总结

Set 和 List 的区别

Collection常用方法

集合迭代iterator()


集合的概念

集合:实际上是一个容器,可以用来容纳其它类型的数据,一次容纳多个对象

注意:

(1)集合不能直接存储基本数据类型,也不能直接存储 java 对象

(2)集合中存储的是 java 对象的内存地址

(3)集合本身是一个容器,一个对象,所以集合存储的都是“引用”

(4)java中每一个不同的集合,底层会对应不同的数据结构(数组,二叉树,链表,哈希表等)

(5)所有的集合类和集合接口都在 Java.util.* 下

集合继承结构

 集合总框架:

简化常用框架:

集合分为两大类:

(1)以单个方式存储元素——>父类:java.util.Collection

(2)以键值对方式存储——>父类:java.util.Map 

说明:

接口:是代表集合的抽象数据类型。例如 Collection、List、Set、Map 等。之所以定义多个接口,是为了以不同的方式操作集合对象

实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构,例如:ArrayList、LinkedList、HashSet、HashMap

算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。这些算法被称为多态,那是因为相同的方法可以在相似的接口上有着不同的实现

常用实现类总结

实现类底层
ArrayList数组
LinkedList双向链表
Vector数组(线程安全,但效率低)
HashSetHashMap(存放在HashSet中的元素等同于存放在HashMap中的key部分)
TreeSetTreeMap(存放在TreeSet中的元素等同于存放在TreeMap中的key部分)
HashMap哈希表
Hashtable哈希表(线程安全,但效率低)
Properties线程安全,但key 和 value 只能存储字符串String
Treemap二叉树,且集合中的key可以按照大小自动排序

Set 和 List 的区别

(1) List 集合存储元素特点:存取有序可重复,且有下标(从0开始)

          Set 集合存储元素特点:无需不可重复,且无下标

(2)Set 检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变 <实现类有HashSet,TreeSet>

(3)List 和数组类似,可以动态增长,根据实际存储的数据的长度自动增长 List 的长度。查找元素效率高,插入删除效率低,因为会引起其他元素位置改变 

<实现类有ArrayList,LinkedList,Vector> 

Collection常用方法

方法描述
booleanadd(E e) 向集合中添加元素e
booleanaddAll(Collection c) 把集合c中所有元素都添加到当前集合中
viodclear() 清空当前集合中所有的元素
booleancontains(Object o) 在当前集合中判断是否包含元素o在当前集合中判断是否包含元素o
booleancontainsAll(Collection c) 判断当前集合是否包含集合c中的所有元素
booleanisEmpty() 判断集合是否为空
iteratoriterator() 返回当前集合的迭代器
booleanremove(Object o) 从当前集合中删除第一个与o匹配的元素
booleanremoveAll(Collection c) 在当前集合中删除在c集合中出现的所有元素
intsize() 返回集合中元素的个数
Object[]toArray() 把集合转换为数组

集合迭代iterator()

迭代器的作用:拥有迭代器的集合,遍历时不需要知道集合内部实现,迭代器统一了遍历方法,不同集合各自遍历方法可能不同,而迭代器则在上层提供了一个统一的抽象,只需要掌握一种迭代器使用就能操作多种不同类型的集合

注意:除了Map之外,适用于所有集合

迭代器对象的两个方法:

方法描述
boolean hasNext()获得序列中的下一个元素
Object next()检查序列中是否还有元素
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class 迭代 {
    public static void main(String[] args) {
        //创建对象
        Collection num = new ArrayList();
        //添加元素(自动装箱)
        num.add(1); //整形
        num.add("java") ; //字符串
        num.add(new Object()) ; //对象
        //创建迭代器对象
        Iterator it = num.iterator() ;
        //循环
        while(it.hasNext()){
            Object obj = it.next();
            System.out.println(obj);
        }

    }
}

结果图:

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java从跨平台到跨行业

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值