初学者——集合框架

Posted tkzm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初学者——集合框架相关的知识,希望对你有一定的参考价值。

为什么要使用集合框架

如果并不知道程序运行时会需要多少对象,或者需要更复杂方式存储对象——可以使用Java集合框架

集合框架图

技术图片

 

Collection接口简介

技术图片

 

Collection下拥有List、Set两个子类

Collection 接口存储一组不唯一,无序的对象

 List接口简介

技术图片

List接口下有很多子类实现,这里面简单的说一下ArrayList和LinkedList这两个子类

ArrayList子类

ArrayList存储一组不唯一,但有序的对象

底层数据结构是数组结构

 扩容增量:原容量的 0.5倍+1

 如 ArrayList的容量为10(默认值就为10),一次扩容后是容量为16

ArrayList实现了长度可变的数组,在内存中分配连续的空间,遍历元素和随机访问元素的效率比较高

ArrayList常用的方法: 

增加元素

  • boolean add(Element e) 增加指定元素到尾部.
  • void add(int index, Element e) 增加指定元素到指定位置
list.add(title4);//添加元素
list.add(1, title5);//在指定位置下添加元素

 

 删除元素

  • void clear() 删除所有元素.
  • E remove(int index) 删除指定位置的元素
list.remove(title1);//删除指定的某一个元素
list.clear();//清空元素

 

 获取元素

  • E get(int index) 获取链表中指定位置处的元素
  • Object[] toArray() 获取一个数组,数组中所有元素是链表中的元素.(即将链表转换为一个数组)
for (int i = 0; i < list.size(); i++) 
            NewsTitle title=list.get(i);//获取每一个元素
            System.out.println(title.getTitle());
        

 

修改元素

  •   E set(int index, E element)  将链表中指定位置上的元素替换成新元素
list.set(1, title6);//修改元素

 

搜索元素

  • boolean contains(Object o) 如果链表包含指定元素,返回true
  • int indexOf(Object o) 返回元素在链表中第一次出现的位置,如果返回-1,表示链表中没有这个元素
  • int lastIndexOf(Object o) 返回元素在链表中最后一次出现的位置,如果返回-1,表示链表中没有这个元素
System.out.println(list.contains(title1));//判断列表中是否存在指定元素
        list.indexOf(title1);//返回元素在链表中第一次出现的位置
        list.lastIndexOf(title6);//返回元素在链表中最后一次出现的位置

 

检查元素是否为空

  • boolean isEmpty() 返回true表示链表中没有任何元素
if(map.isEmpty())
            System.out.println("已清空Map中的数据!");
        

 

获取元素的长度

  • int size() 返回长度(包含元素的个数)
System.out.println("Map中共有"+map.size()+"组数据");

 ArrayList的迭代器

listIterator.hasPrevious()检查序列中是否还有上一个元素
listIterator.previous()获得序列中的上一个元素
listIterator.hasNext()检查序列中是否还有下一个元素
listIterator.next()获得序列中的下一个元素

LinkedList子类

LinkedList存储一组不唯一,但有序的对象

底层数据结构是数组结构

 扩容增量:原容量的 0.5倍+1

 如 LinkedList的容量为10(默认值就为10),一次扩容后是容量为16

 LinkedList采用链表储存方式。插入删除元素时效率比较

 LinkedList常用方法

增加元素:

  • add(E e):在链表后添加一个元素; 通用方法
  • addFirst(E e):在链表头部插入一个元素; 特有方法
  • addLast(E e):在链表尾部添加一个元素; 特有方法
list.add(title3);//添加元素
list.addFirst(title4);//在开头插入一个元素
list.addLast(title5);//在最末尾添加一个元素

 

删除元素:

  • remove() :移除链表中第一个元素; 通用方法
  • remove(E e):移除指定元素; 通用方法
  • removeFirst(E e):删除头,获取元素并删除; 特有方法
  • removeLast(E e):删除尾; 特有方法
list.remove(title5);//删除元素
list.remove(2);//删除指定下标元素
list.removeFirst();//删除第一个元素
list.removeLast();//删除最后一个元素

检察元素:

  • get(int index):按照下标获取元素; 通用方法
  • getFirst():获取第一个元素; 特有方法
  • getLast():获取最后一个元素; 特有方法
list.get(i);//获得元素
list.getFirst();//获得头条元素
list.getLast();//获得末尾元素

 

Set接口

技术图片

Set下面也有很多子类实现了它,这里我就说一下HashSet

Set()中不存在get()方法

 HashSet子类

HashSet接口存储的是一组唯一,并且无序的对象

底层实现是一个HashMap(保存数据),实现Set接口

默认初始容量为16

加载因子为0.75:即当 元素个数 超过 容量长度的0.75倍 时,进行扩容

扩容增量:原容量的 1 倍

如 HashSet的容量为16,一次扩容后是容量为32

HastSet常用方法

这里就不贴代码了跟上面的一样.....

//增加

  • add(null);


//删除

  • remove(news);


//对比查找

  • contains(news);


//清空集合

  • clear();


//获取长度

  • size();

Map接口简介

 技术图片

 Map中介绍一个最常用的HashMap子类

Map接口存储一组键值对象,提供key到value的映射

 HashMap子类

 默认初始容量为16

加载因子为0.75:即当 元素个数 超过 容量长度的0.75倍 时,进行扩容

扩容增量:原容量的 1 倍

如 HashSet的容量为16,一次扩容后是容量为32

 HashMap常用方法

put 添加键值对
containsKey() 键中是否包含这个数据
get() 通过键拿到值
isEmpty() 判断是否为空
remove() 在键值对中删除
size() 键值对的数据长度
clear() 清空键值对

Iterator迭代器

使用next()获得序列中的下一个元素。
使用hasNext()检查序列中是否还有下一个元素

 

 

目前就介绍这么多,还望大佬手下留情.....

 

以上是关于初学者——集合框架的主要内容,如果未能解决你的问题,请参考以下文章

laravel特殊功能代码片段集合

PHP必用代码片段

初学MyBatis框架

spring初学

Java集合框架之Set,Map

译文:18个实用的JavaScript代码片段,助你快速处理日常编程任务