Java集合类

在这里插入图片描述

在这里插入图片描述
List:有序可重复
常用方法:add();addAll();get();set();remove();indexOf();
Set:无序不可重复
Queue:模拟队列,先进先出
常用方法:add();element();offer();peek();poll();remove();
Map:存储键值对形式的元素,描述不可重复的键到值的映射,Map中key用Set来存放,不可重复,key类必须重写hashCode()和equals()方法。
常用方法:put();remove();putAll();clear();get();containsKey();containsValue();size();keySet();

List接口实现类:
ArrayList:底层是数组保存元素,自动扩容机制实现动态增加容量,默认大小为 10,默认扩容方式为原来的((原始容量x3)/2 + 1)倍,插入和删除效率不佳,查询效率很高。
LinkedList:底层基于双向循环列表,增删效率高。
常用方法:add();addFist();addLast();getFirst();getLast();removeFirst();removeLast();
Vector:该类和ArrayList非常相似,但是该类是同步的,可以用在多线程的情况,该类允许设置默认的增长长度,默认大小为 10,默认扩容方式为原来的2倍:当指定初始容量时,每次扩容都会扩为原来的2倍;当未指定初始容量时,扩容都为10的倍数。

Set接口实现类:
HashSet:底层是哈希表结构,允许包含值为null的元素,但最多只能一个;
TreeSet:底层是自平衡的排序二叉树实现的,既可以保证元素的唯一性,又可以对元素进行排序
特有的方法:comparator();first();last();lower();higher();subset();headset();tailSet();
排序方式:
1、自然排序,存入TreeSet集合的对象必须实现Comparable接口,调用compareTo()方法实现对象比较
2、定制排序,在创建TreeSet对象时,将实现Comparator接口的类的对象作为参数传入TreeSet的构造函数TreeSet()中,Comparator接口的实现类内重写compare()方法,编写比较逻辑。

Queue接口实现类:
PriorityQueue:元素按大小重新排序,不允许插入null,
排序方式:
1、自然排序
2、定制排序
Deque接口:Queue接口子接口,代表一个双端队列
Deque接口的实现类:
ArrayDeque:基于数组的双端队列

Map接口实现类:
HashTable:同HashMap,但不允许使用null作为键和值,存取元素速度较慢
Properties:HashTable的子类,键和值都是字符串类型的
HashMap:允许使用null键和null值,不保证映射的顺序
LinkedHashMap:HashMap的子类迭代顺序与键值对的插入顺序一致
TreeMap:需要根据键值对进行排序,数据结构为红黑树(自平衡的排序二叉树。)

集合底层数据结构初始容量扩容大小负载因子
Vector数组102n1
ArrayList数组101.5n+11
LinkedList双向链表(JDK1.6之前为循环链表,JDK1.7取消了循环)
HashSetHashMap162n0.75
HashMap数组、链表16(长度必须为 2 n 2^{n} 2n2n0.75
HashTable数组、链表112n+10.75

泛型
JDK5.0新加入的特性。
泛型在定义集合类时,使用<参数化类型>的方式指定该集合中方法操作的数据类型。
通配符<?>,比如List<?>是List< String>、List< Object>的子类.
有界类型List<?extends Person>表示只允许泛型的类型为Person和Person的子类。
泛型的限制:
1、加入集合中的对象类型必须与指定的泛型一致;
2、静态方法中不能使用类的泛型;(静态方法在类加载时就加载进Java虚拟机,如果使用类的泛型,若此类没有加载到虚拟机内就回出错);
3、如果泛型类是一个接口或抽象类,则不可创建泛型类的对象;
4、不能在catch中使用泛型(catch的作用是处理异常,所以catch的参数应该都是异常的类型,而不是泛型.);

Collections工具类:
提供一系列静态方法对集合元素进行排序、查询和修改操作
排序操作:reverse(),shuffle(),sort(),swap();
查找、替换操作:binarySearch(),max(),min(),replaceAll(),frequency();

Array工具类:
提供一系列操作数组的静态方法
常用方法:sort(),binarySearch(),fill(),toString(),copyOfRange();

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值