Java中的集合

List 接口及实现类

Set 接口

Map 接口

Collections类


文章目录


前言

集合的框架


 

一、集合是什么?

是一个存储对象的容器。(java中万物皆对象)。

集合:变长容器,只能存储引用数据类型,可以存储不同类型的元素,但是为了方便对集合中的元素进行遍历等操作,一般存储同一类型。虽说集合只能存储引用数据类型,但是在存储基本数据类型时可以通过自动装箱将基本数据类型转换为基本数据类型包装类,集合可以存储基本数据类型也可以存储引用数据类型。(数组实际上也是一个集合。是定长容器,可以存储基本数据类型和引用数据类型(即所有数据类型都可以存),数组中的元素类型必须统一。)

二、划分

单列:Collection

定义:单列集合中的顶级接口,里面定义了单列集合共有的方法。

方法主要有增、删、改、查、判断为主

代码如下(示例):

Collection<String> c = new ArrayList<>(); //创建对象
boolean add(Object element); //增
boolean remove(Object element);//删
void clear();  //清空集合元素
int size(); //长度
boolean isEmpty(); //是否为空
boolean contains(Object element); //是否包含
boolean retainAll(Collection c);  求交集 , 集合数据发生变化返回 true, 不变返回false
 Set 中的数据对象没有顺序且不可以重复。
 List 中的数据对象有顺序且可以重复。

LIst:有序

List继承了Collection接口,有三个实现的类
ArrayList
数组列表,数据采用数组方式存储。
add(int index, E element)
get(int index)
indexOf(Object o)
lastIndexOf(Object o)
remove(int index) 删除并返回指定位置元素
removeRange (int fromIndex, int toIndex) 删除指定区间的元素(子类继承使用)
set(int index, E element)
LinkedList
底层通过链表实现
缺点:查询慢,(从头或尾开始查找直至找到),中间增删快,只需改变后继节点位置
add(int index,Object element) 
addFirist(Object element)
addLast(Object element)
get(int index)
removeFirst()
removeLast()
remove(int index)
getFirst()
getLast()
offer()//将指定元素添加到此列表尾部
poll()//检索并删除此列表的头
Vector
数组列表,添加同步锁,线程安全的

Set:无序、不可存储重复元素

三种遍历:

1.for循环遍历

for (int i = 0; i <list.size() ; i++) {
    if (list.get(i).equals("a")){
        list.remove(i);
    }
} //遍历集合时,可删除元素 删除元素后,元素向前移动,索引++,有可能会出现错漏问题
2.增强for循环的遍历
for (String s:list
     ) {
    if (s.equals("d")){
        list.remove(s);
    }
} //遍历过程不能删除元素,否则会抛出并发修改异常
3.迭代器遍历(Iterator)
//只可在list中用
Iterator iterator(); //返回一个ArraList中的内部内对象,实现Iterator接口
Iterator<Stringt> it = list.iterator
        while(it.hasNext()){
            if (e.equals("d")){
                it.remove();
            }
        }
              hasNext(); //判断集合是否还有元素  有返回true 无返回false

HashSet:存储的元素顺序不固定,不可存储重复元素

HashSet类中的元素不能重复,即彼此调用equals方法比较,都返回false。
底层数据结构是哈希表+链表 哈希表依赖于哈希值存储

TreeSet:可按照元素的自然顺序排列

可以给Set集合中的元素进行指定方式的排序。存储的对象必须实现Comparable接口。
TreeSet底层数据结构是二叉树(红黑树是一种自平衡的二叉树)

双列:Map

代码如下(示例):

V put(K key,V value)
V remove(Object key)
void clear()
boolean containsKey(Object key)
boolean containsValue(Object value)
boolean isEmpty()
int size()
V get(Object key)
Collection<V> values()
Set<K> keySet()
Set<Map.Entry<K,V>> entrySet()
  HashMap(键无序)
HashMap中元素的key值不能重复,排列顺序是不固定的,可以存储一个 为null的键。
TreeMap
TreeMap中所有的元素都保持着某种固定的顺序,如果需要得到一个有序的Map就应该使用TreeMap,key值所在类必须实现Comparable接口。(通过键进行排序,有自平衡,键不能重复,键可以排序必须实现排序接口)
  HashTable(线程安全的map)
实现了同步。 不能存储为null的键

Collections

Collections 是集合类的工具类,与数组的工具类 Arrays 类似 .
addAl l(Col lection<? super T> c, T... elements);
binarySearch(List<? extends Comparable<? super T>> l ist, T key)
sort(List<T> l ist)
sort(List<T> l ist, Comparator<? super T> c)
swap(List<?> l ist, int i, int j)
copy(List<? super T> dest, List<? extends T> src) ; 注意 dest size 需大于等于 src.size
emptyList() 返回为空的集合 , 不能添加数据
fi l l(List<? super T> l ist, T obj)
max(Col lection<? extends T> col l)
min(Col lection<? extends T> col l)
replaceAl l(List<T> l ist, T oldVal, T newVal)
reverse(List<?> l ist)
shuffle(List<?> l ist) 随机排序
copy(dest,src) 集合复制

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一只求学猿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值