Java学习日志

Collection集合

容器|集合 :

存储多个数据

数组 :

存储多个数据 , 一段连续的内存空间

数组的特点:

    1.引用数据类型
    2.定长,长度一旦确定不可改变
    3.存储数据的类型相同
    4.有序,有索引

集合的特点:

    存储任意引用类型数据
    集合的长度可变,可以根据需求动态的增删数据,长度随之改变

容器中的接口层次结构

    Collection : 单个值的集合
    Set 无序不可重复
    List 有序可重复,有索引
    Map : 键值对的集合(KEY-VALUE)
    Collection 集合层次结构中的根接口。 集合表示一组对象,称为其元素 。
    常用方法
    遍历方式:
        foreach
        iterator迭代器

泛型: jdk1.5
参数化类型 : 数据类型作为参数传递, 只能配置引用数据类型

<>定义泛型

    泛型的行为发生在编译期间,运行期间发型配置的所有内容无效,泛型擦除
    要求先定义泛型,才能使用泛型
    泛型类 : 类型的后面定义泛型,在使用类型的时候可以通过泛型传递具体的类型,类中可以进行使用
    泛型方法

泛型的优点:

        代码简单简洁
        增强程序健壮性,避免类型转换异常的出现
        增强稳定性与可读性

List : 有序,可重复
Set : 无序,不可重复|唯一的

List : 有序集合(也称为序列 )。 该接口的用户可以精确控制列表中每个元素的插入位置。
新增: 一些列根据索引操作的方法
遍历方式 :
    for普通for循环
    foreach 增强for循环
    iterator迭代器
    有序,可重复的

ArrayList :

实现所有可选列表操作,并允许所有元素,包括null 。

底层结构:

数组 Object[] elementData;

特点:

根据索引查询遍历效率较高,增删效率低

应用场景:

适合应用在大量做查询,少量做增删的位置

扩容问题:

        初始容量 : 默认初始容量为10 ,在第一次添加add的时候进行构建  private static final int DEFAULT_CAPACITY = 10;
        扩容机制 : 每次扩容原容量的1.5倍 int newCapacity = oldCapacity + (oldCapacity >> 1);

新增功能:

void forEach(Consumer<? super E> action)

遍历 :

        普通for
        增强for
        iterator迭代器
        listIterator迭代器

Vector :

    底层结构 : 数组
    特点 : 与ArrayList相同
    区别:
        1)  Vector是同步的|线程安全
            ArrayList不同步|线程不安全,相对效率较高
        2) Vector每次扩容原容量的2倍
           ArrayList每次扩容原容量的1.5倍,相对ArrayList更有利于节省内存

 总结 :  如果不需要线程安全实现,建议使用ArrayList代替Ve.1

定义一个ArrayList存储javabean类型的数据,测试使用
如果存储javabean类型的数据,在调用一些方法时候(indexOf..),默认调用equals方法进行判断,要求对javabean类型重写equals方法

LinkedList:

实现所有可选列表操作,并允许所有元素(包括null )。

底层结构:

双向链表

特点:

查询效率低,增删效率高

应用场景:

单个数据值的集合中,允许数据有序,且可重复,在大量做增删,销量做查询的时候时候适合使用链表

新增功能:

新增了一些与链表头尾相关的方法

注意:

请注意,此实现不同步。
定义链表结构,存储javabean类型的数据,测试使用,遍历使用
存储javabean类型数据时候,要求javabean类型重写equals方法,否则使用一些判断比较的方法时候回默认调用equals方法

Set :

无序,不可重复|去重

无序:

存放的顺序与内部真实存储的顺序不一致

去重:

集合不包含元素对e1和e2 ,使得e1.equals(e2)和最多一个null元素。

新增功能:

static Set of(E… elements) 返回包含任意数量元素的不可修改集。

遍历方式:

        foreach
        iterator迭代器

TreeSet :

底层结构 :

红黑树

特点 :

查询效率较高,自动把数据做升序排序
底层是由TreeMap维护的
新增功能: 新增了一些与比较大小相关的方法

遍历方式 :

        foreach
        iterator迭代器

注意 :

TreeSet需要存储相同类型的数据,因为会默认存在比较排序

TreeSet存储javabean类型的数据

去重与排序:

都是根据比较规则实现的,与equals没有关系

比较规则:
    内部比较器|内部比较规则|自然排序 : 比较规则定义在javabean类型的内部
        javabean类型实现Comparable接口,重写compareTo(T o)方法,在方法中定义比较规则
    外部比较器|外部比较规则|定制排序 : 比较规则定义在javabean类型的外部
        定义一个实现类,实现Comparator接口,重写int compare(T o1, T o2),在方法中定义比较规则
Arrays.sort(数组) 默认升序排序
static <T> void sort(T[] a, Comparator<? super T> c) 根据指定比较器引发的顺序对指定的对象数组进行排序。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值