接口

Collection 接口
List 线程结构
元素可重复 可以有多个null 位置确定 有下标 有序
ArrayList LinkedList
Set
元素不重复 只能允许有一个null 位置不确定 无下标

Collection方法:

  1. boolean add(E e)
  2. boolean addAll(Collection<?> c)
  3. boolean isEmpty()
  4. void clear()
  5. int size()
  6. boolean contains(E e) xnull?enull:x.equals(e)
  7. boolean containsAll(Collection<?> c)
  8. boolean remove(E e)
  9. boolean removeAll(Collection<?> c)
  10. boolean retainAll(Collection<?> c)
  11. Object[] toArray()
  12. T[] toArray(T[])
  13. Iterator iterator()

List方法:
Collection的方法全部重写

  1. void add(int index,E e)
  2. void addAll(int index,Collection<?> c)
  3. List toList(int fromIndex,int toIndex)
  4. void set(int index,E e)
  5. T get(int index)
  6. void remove(int index)
  7. int indexOf(E e)
  8. int lastIndexOf(E e)
  9. ListIterator listIterator()
    10.ListIterator listIterator(int index)

Iterable
抽象方法: Iterator iterator();

Iterator
抽象方法:
boolean hasNext()
T next()
void remove() 可选 如果没有调用next或者多次调用remove而没有调用next都会异常

ListIterator
boolean hasNext()
T next()
int nextIndex()

boolean hasPrevious()
T previous()
int previousIndex()

void remove()
void add(T e)
void set(E e)

集合迭代:

  1. toArray返回数组形式,再迭代数组
  2. iterator返回迭代器 hasNext next 来迭代
  3. 增强型的for语句
    for(元素类型 e:集合) —> 转换成 迭代器的器

List迭代:
所以拥有集合的迭代方式
4.for(int i=0;i<list.size();i++){
list.get(index)
}
5.listIterator获得列表迭代器进行迭代

自定义一个类,如果需要能够使用增强型for语句,必须implements Iterable接口

Collections 集合操作类
静态方法
static Comparator<?> sort(List<?> list)
static void sort(List<?> list, Comparator<?> c)

Comparable
int compareTo(T o)
返回值 升序 降序
返回<0 表示 thiso
返回>0 表示 this>o this<o
返回=0 表示 this=0 this=o

Comparator
int compare(T t1,T t2)
返回值 升序 降序
<0 t1t2
>0 t1>t2 t1<t2
=0 t1t2 t1t2

Deque 双端队列的接口 特点: 只允许在两端进行插入或者删除
ArrayDeque LinkedList

ArrayList — List
LinkedList ==== List + deque

queue 队列 特点:先进先出 只允许在队列末尾插入 只允许在队列首删除

Stack 堆栈 特点:先进后出 只允许在一端进行插入和删除 栈顶

集合可以转换成数组
列表可以转换成数组 toArray() toArray(T[])

数组转换成列表:Arrays类里面
static List asList(T… a)
返回一个受指定数组支持的固定大小的列表。
返回一个受指定数组支持的固定大小的列表。(对返回列表的更改会“直接写”到数组。)此方法同 Collection.toArray() 一起,充当了基于数组的 API 与基于 collection 的 API 之间的桥梁。返回的列表是可序列化的,并且实现了 RandomAccess。
此方法还提供了一个创建固定长度的列表的便捷方法,该列表被初始化为包含多个元素:

 List<String> stooges = Arrays.asList("Larry", "Moe", "Curly");

自定义数据类型如果要放到ArrayList及LinkedList里需要重写equals方法
只有重写了equals方法 contains containsAll remove removeAll retainAll才能正常使用 否则用比较
集合里存储的是对象的引用 如果用
比较将没有什么意义

Set 接口 extends Collection接口
HashSet LinkedHashSet TreeSet
HashSet: 自定义类型需要重写 hashCode方法及equals方法
注意:!!!
LinkedXXX 需要重写equals方法
HashXXX 需要重写hashCode和equals方法
TreeXXX 需要implements Comaparable接口 实现compareTo方法
或者提供Comparator对象
判断是否相等不用equals方法

HashSet在进行插入或者添加时:会先计算该对象的hashCode,通过hashCode值计算得到一个下标位置,

如果已经添加到HashSet中的元素,其hashCode值如果发生变化以后,该元素将再也无法判断是否存在,也无法删除该对象

hashCode方法:
1. equals方法返回true时,保证hashCode值一样
2. hashCode值应该在任何时候都返回一样的结果

数组 下标 – 元素
下标值 和 元素值 是没有任何联系的

Map 查询表 映射 接口
key-value 每个唯一的key对应一个value 字典
key不能重复 value可以重复
key-value对
HashMap HashTable TreeMap

在创建Map时,一般需要指定key的类型和value的类型

put/putAll元素时,如果key相等,则更新,否则添加

方法:

  1. boolean isEmpty()

  2. int size()

  3. V put(K key,V value)
    如果map中key不存在,则添加,并且返回null
    如果map中key已存在,则修改key所对应的value值,并且返回原value值

  4. void clear()

  5. boolean containsKey(Object key)

  6. boolean containsValue(Object val)

  7. V remove(Object key) 移除一个key-value对

  8. void putAll(Map<K,V> map) 添加

  9. V get(Object key)

  10. Set<Map.Entry<K,V>> entrySet()
    返回此映射中包含的映射关系的 Set 视图。

  11. Set keySet()
    返回此映射中包含的键的 Set 视图。

  12. Collection values()
    返回此映射中包含的值的 Collection 视图。
    key替代下标

迭代map的方式:

  1. keySet获得map中key的集合
    Set set = map.keySet();
    for(K key:set){
    map.get(key)
    }

  2. 迭代值 这种方式用的很少
    Collection values = map.values();
    for(V v: values){
    v //就是value
    }

  3. 获取map中key和value组成的Entry对象 每个Map.Entry包含一个key和这个key对应的value
    Set<Map.Entry<K,V>> set = map.entrySet();
    for(Map.Entry<K,V> entry: set){
    entry.getKey()
    entry.getValue()
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值