集合类的常用方法

Java集合框架详解
本文详细介绍了Java集合框架的基础概念,包括Collection和Map接口及其主要实现类的特点与使用方法。涵盖了List、Set、ArrayList、LinkedList、HashSet、LinkedHashSet等集合类的操作方法与应用场景,并对泛型、迭代器、增强for循环等进行了说明。

集合day01

Collection:集合的顶层接口,定义了集合中通用的功能方法,可以使用多态的方式创建子类对象

boolean add(Object e) //添加元素

void clear() //清空集合

boolean remove(Object o) //删除元素

boolean contains(Object o) //判断当前集合是否包含某元素

boolean isEmpty() //判断当前集合是否为空

int size() //返回集合中元素的个数

Object[] toArray() //把集合中的元素,存储到数组中

 

迭代器:Collection接口的方法 Iterator<E> iterator() 返回的是调用方法的集合的专属迭代器接口,其实现类一定会重写此方法,返回Iterator接口的实现类对象

Iterator iterator() //迭代器,用来遍历集合中的元素的

Iterator两个方法:

hasNext() 判断集合是否有下一个元素

next() 取出下一个元素

 

增强for循环:

作用:遍历集合或数组

格式:for(集合中元素数据类型 变量名:要遍历的集合或数组){

System.out.println(变量名);

}

 

定义一个泛型类:

Public  class 类名<变量名>{ }

确定泛型类型:创建对象时确定泛型的数据类型。

定义一个泛型方法:

修饰符 <代表泛型的变量> 返回值类型 方法名(参数){ }

确定泛型类型:调用方法时确定泛型的类型。

定义泛型接口:

Public interface 接口名<变量名> { }

确定泛型类型:

(1)定义实现类时确定泛型类型

(2)定义实现类时没确定泛型类型,创建实现类对象时再确定泛型类型

 

泛型通配符 ?

泛型的限定:

?extends 父类   (上限限定)只能传父类对象及子类对象

?extends 父类   (下限限定)只能传父类对象及父类的父类对象

 

集合day02

List接口集合:

java.util.List 特点:有序、有索引、可重复

其实现类:ArrayList、LinkedList

public boolean add(E e) 向集合末尾处添加指定的元素

public void add(int index, E e) 向集合指定索引处,添加指定的元素,原有元素依次后移

public boolean remove(E e) 将指定元素对象从集合中删除

public E remove(int index) 将指定索引处的元素,从集合中删除,返回值为被删除的元素

public E set(int index, E e) 将指定索引处的元素,替换成指定的元素,返回值为替换前的元素

public E get(int index) 获取指定索引处的元素,并返回该元素

 

java.util.ConcurrentModificationException并发修改异常

使用迭代器迭代集合时,如果对集合的长度进行了改变就会报此异常

List集合特有的迭代器,有添加方法,方法如下:

ArrayList<String> list = new ArrayList<String>();

ListIterator<String> listIterator = list.listIterator();

 

java.util.ArrayList

特点:有序、有索引、可重复

底层数据是数组,查找快,增删慢;线程不安全,效率高

Public boolean contains(Object o)判断集合中是否包含指定的元素,以equals方法来进行比较

 

java.util.LinkedList

特点:有序、有索引、可重复

底层数据是链表,查找慢,增删快;线程不安全,效率高

public void addFirst(E e) 将指定元素插入此列表的开头

public void addLast(E e) 将指定元素添加到此列表的结尾

public E getFirst( ) 返回此列表的第一个元素

public E getLast( ) 返回此列表的最后一个元素

public E removeFirst( ) 移除并返回此列表的第一个元素

public E removeLast( ) 移除并返回此列表的最后一个元素

 

Set接口集合:

java.util.Set 特点:不可重复

其实现类:HashSet、LinkedHashSet

 

在Object类中

int hashCode()方法,返回的是对象的哈希值。

Object类的hashCode()方法,返回的是通过地址值计算得到的哈希值(只要对象的地址不同,哈希值就是不同的)。

子类可以重写hashCode()方法,返回的是子类重写后随意返回的值。

 

java.util.HashSet 

特点:无序、不可重复、底层结构为哈希表;查询和增删都较快

HashSet保证了元素唯一,需要借助hashCode()和equals()

String类对hashCode()进行了方法重写,是根据字符串的内容进行计算,得到一个数(字符串的内容不同,hashCode计算得到的值就不同),但是也会有极少数的情况,字符串内容不同,但hashCode计算出的值相同,因此再借助equals()方法。

自定义类需要手动(快捷键生成也行)重写hashCode()方法引用数据类型直接调用其hashCode(),基本数据类型直接就是值本身。

先用hashCode()方法进行比较哈希值

不同——>直接添加到HashSet集合中

相同——> 再用equals()方法进行比较内容

不同——>添加到HashSet集合中

相同——>则不添加进HashSet集合

 

java.util.LinkedHashSet 

特点:有序、不可重复、底层结构为链表+哈希表

【哈希表由数组和链表组成(每个数组元素都是一个链表)】

 

集合day03

Map:双列集合的顶层接口

Java.util.Map  存放的键值对

两个实现类:HashMap、LinkedHashMap

V put(K key, V value) 将一对元素存放到map集合中,返回值一般都是null,但是有相同键覆盖时,会把覆盖前的值返回

V get(Object key) 根据键取出值

V remove(Object key) 根据键进行删除一对元素,将删除的值返回

Set<K> keySet() 返回所有键的set集合

Set<Map.Entry<K,V>> entrySet() 获取所有键值对对象

Map集合遍历的两种方式:

(1)根据键找值    (2)根据键值对对象找键和值

 

HashMap:无序、键唯一、底层结构:哈希表

LinkedHashMap:有序,键唯一、底层结构:哈希表+链表

键的唯一是通过重写hashCode()与equals()方法来保证键的。

 

集合工具类Collections(java.util.Collections)的方法:

Int binarySearch(List li, 元素类型 key) 对list集合二分查找

public static<T> void sort(List<T> list) 对list集合进行排序

public static void shuffle(List<?> list) 将List集合中的元素存储位置随机打乱

 

可变参数  本质上就是一个数组

前提:参数类型确定、参数个数不确定,可以使用可变参数

使用方式:方法名 (参数类型 ... 变量名)

可变参数的注意事项:

(1)一个方法中只能有一个可变参数

(2)如果方法中有多个参数,可变参数放在最后

 

转载于:https://my.oschina.net/jinyeyaonitian/blog/760931

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值