JavaSE集合框架

集合类

在这里插入图片描述

· 1.5之前集合不能存储基本数据类型;1.5后集合也可以基本数据类型,基本数据类型可自动装箱
.集合中储存的是对象的引用,不是对象本身
在这里插入图片描述
· 每个容器对数据的存储方式都有不同。这个存储方式我们称为数据结构
· List中的对象是有序的,可以重复
· Set中的对象是无须的,不可以重复
· ArrayList底层使用的是数组结构,特点查询速度快,但是更改和删除速度较慢;线程不同步
· LinkedList底层是链表数据结构,特点查询速度慢,但是更改和删除速度快
· Vector底层使用的是数组结构,特点:和ArrayList功能相同,特点:增删查询都很慢;(Vector出现的时候还没有集合框架);线程同步;被ArrayList替代

· HashSet底层是hash表,hash表存放的是对象的hash地址值。如果两个对象的hashCode值相等,但是equals()等于false,两个对象都可以保存在HashSet中。
·TreeSet底层是二叉树数据结构,可以排序

· HashTable底层是哈希表数据结构,不可以存入null键和null值;该集合是线程同步的 jdk1.0
· HashMap底层是哈希表数据结构,允许存入null键和null值;该集合是线程非同步的,可替换HashTable jdk2.0
· TreeMap底层是二叉树数据结构,线程不同步,可以对Map集合中的见进行排序
· set集合的底层就是使用了Map集合。
在这里插入图片描述

Collection共性方法

在这里插入图片描述

Iterator 迭代器

是一个接口
在这里插入图片描述

ArrayList al = new ArrayList();
al.add("sdsd");
al.add("sda");
Iterator it = al.iterator();
while(it.hasNext()){
soup(it.next());
}

优化的写法
for(Iterator it = al.iterator(); it.hasNext();){
soup(it.next());
}

打印集合

在这里插入图片描述

List中的共有方法

在这里插入图片描述
在这里插入图片描述

and(int index, E element)
get(int index)
indexOf(Object obj)
lastIndexOf(Object obj)
listIterator()
listIterator(int index)
remove(int index)
set(int index, E element)
subList(int fromIndex, int toIndex)
· toArray(T[] a)集合转数组,是为了限制对集合的操作

在这里插入图片描述

listIterator()

iterator迭代list的过程中不可通过集合对象的方法操作元素,否则会报并发异常.
在这里插入图片描述
listIterator() 是iterator()的子类,可执行如下操作
在这里插入图片描述

LinkedList

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

addFirst(E e)
addLast(E e)
offer()
offerFirst()
offerLast()
clone()
descendingIterator()
element()
peek()
peekFirst()
peekLast()
getFirst()
getLast()
pop()
remove()

去除ArrayList中的重复对象

思路:
List集合判断对象是否相同,用equals()方法;(其他集合不一样)
ArrayList.contails()方法会自动调用对象的equals()方法
在这里插入图片描述

对象默认继承了Object的equals()方法,该equals()方法比较的是对象的地址值
重写equals()方法
在这里插入图片描述
list集合的remove()底层也调用了equals()方法。

List集合实现排序

HashSet没有排序,set如果要排序使用TreeSet
List集合可以通过Collections.sort实现排序
Collections是一个工具类,sort是其中的静态方法,它有两种参数形式:
方法一:
public static <T extends Comparable<? super T>> void sort(List list) {
list.sort(null);
}
对象实现Comparable接口中的comparaTo()方法;

方法2:
public static void sort(List list, Comparator<? super T> c) {
list.sort©;
}
Collections.sort(Object obj, Comparator cmp)

Set集合公共方法

和Collection的方法一致
在这里插入图片描述
在这里插入图片描述

HashSet

· 存自定义对象people,name和age相同是同一个对象;
HashSet判断对象是否相同会先比较HashCode地址值,再比较equals(),所以需要重写hashCode()和equals()方法。
在这里插入图片描述
在这里插入图片描述
· hashSet判断和删除的依据:先比较hashCode()再比较equals()
· hashSet线程非同步的

TreeSet

可以对set集合中的元素进行排序,

TreeSet排序方法1

默认按字母的自然顺序排序(String类默认已经实现了Comparable接口)
TreeSet中存的对象要有比较性,否则会报类转换异常
在这里插入图片描述

TreeSet排序方法2

TreeSet中的对象需实现Comparable接口中的compareTo()方法,TreeSet会自动调到compareTo()方法
在这里插入图片描述
在这里插入图片描述
TreeSet判断对象是否相同调用compareTo()方法,保证元素唯一性
在这里插入图片描述
TreeSet底层是二叉树数据结构,默认从小到大取值
在这里插入图片描述

TreeSet排序方法3

当我们无法修改对象的比较性时,我们需要让集合自身具备比较性;给集合构造函数传入Comparator对象
在这里插入图片描述
在这里插入图片描述
compare:排序;equal:比较对象是否相同
在这里插入图片描述

Map集合

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

HashTable

在这里插入图片描述

HashMap

在这里插入图片描述

取出HashMap中的值
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

集合判断对象是否相同

List集合比较equals()方法,equals默认比较的是对象的地址
HashSet先比价hashcode值,再比较equals()
TreeSet比较equals()方法

Collections

集合算法类
提供用来处理集合的大量静态方法(可以直接用Collections.静态方法()来使用),例如排序,乱序,反转,二分法查找等
一、static void Collections.sort(list) 排序
方法一:
自定义对象需手动实现比较行为,String默认实现了比较行为
在这里插入图片描述
方法二:
在这里插入图片描述
static void Collections.max(list): 取list中的最大值
在这里插入图片描述
binarySearch() 二分搜索法搜索指定列表,获取指定元素的位置
在这里插入图片描述

Collections.copy()复制集合
在这里插入图片描述
Collections.file() 将集合中的元素全部替换为指定元素
在这里插入图片描述
Collections.replace() 替换list中的指定元素
在这里插入图片描述
static void Collections.reverse(list)反转
Collections.reverseOrder() 逆转
在这里插入图片描述
在这里插入图片描述
强行逆转现有比较器
在这里插入图片描述
在这里插入图片描述
Collections.SynList()
集合中的对象本身线程不安全
在这里插入图片描述

static void Collections.shuffle(list)乱序
static void Collections.swap(list,int,int)指定两点调换

Arrays类

对数组进行操作的算法类
Arrays.sort()排序
Arrays.asList()转换成集合,不可增减
在这里插入图片描述
如果数组中的元素都是对象,则转成集合时,数组中的元素就全部转成集合中的元素
如果数组中的元素是基本数据类型,则转成集合时会将该数组作为集合中的元素存在。
int[] 定义为Integer[] ,数组中的元素就全部转成集合中的元素
在这里插入图片描述

增强for循环

ArrayList<String> a = new ArrayList();
a.add("aaa");
a.add("bbb");

fo(String s : a){
	soup(s)
}

只能取出元素,而不能修改集合中的元素

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值