java基础(三)------集合构架

1.集合构架关系

集合构架:
java的集合构架是一些封装好的数据结构,可以用来保存大量的,成组的数据,主要是Java.util.*包下面。
java集合构架

Collection接口是集合的根接口,有三个重要的子接口,Set(规则集),List(线性表),Map(键值对)。

TablesAre
Set存储元素不能重复
List存储元素可以重复
Map键不能重复

2.迭代器Iterator和比较器接口Comparator

1.Iterator迭代器
Iterator是在集合构架中用来遍历集合的工具类,可以从 集合.iterator() 获得。

  1. 通过next()获得集合中下一个元素
  2. 通过hasNext()检查集合中是否还有元素
  3. 通过remove()讲集合中的元素删除

List的实现类还有自己独有的ListIterator,可以实现从两个方向遍历List,也可以从List中插入和删除元素(List也可以使用Iterator)

  1. hasNext():以正向遍历列表时,如果列表迭代器后面还有元素,则返回 true,否则返回false
  2. next():返回列表中ListIterator指向位置后面的元素
  3. hasPrevious():如果以逆向遍历列表,列表迭代器前面还有元素,则返回 true,否则返回false
  4. hasPrevious():如果以逆向遍历列表,列表迭代器前面还有元素,则返回 true,否则返回false
  5. add(E e): 将指定的元素插入列表,插入位置为迭代器当前位置之前
  6. remove():从列表中删除next()或previous()返回的最后一个元素
  7. nextIndex():返回列表中ListIterator所需位置后面元素的索引
  8. previousIndex():返回列表中ListIterator所需位置前面元素的索引
  9. set(E e):从列表中将next()或previous()返回的最后一个元素返回的最后一个元素更改为指定元素e

2.Comparator比较器接口

1.Comparable 接口
Comparable接口是排序接口,实现了该接口的类就意味着“支持排序”,存储对象为该类的List可以通过Collections.sort()排序,该类也可以作为TreeSet和TreeMap的对象存储而不需要再指定比较器。
Compatable接口的定义里只有一个函数,必须实现这个compareTo函数,返回的int值,负数小,0相等,正数大。

package java.lang;
import java.util.*;

public interface Comparable<T> {
    public int compareTo(T o);
}

2.Comparator 接口
我们若需要控制某个类的次序,可以建立一个“该类的比较器”来进行排序,相当于“外部比较器”,即,没有实现Comparable接口的类需要比较时,传入一个实现Comparator接口的比较器即可。
Comparator 接口必须实现compare函数,equals函数可以不实现。compare函数返回的int值,负数小,0相等,正数大。

package java.util;

public interface Comparator<T> {

    int compare(T o1, T o2);

    boolean equals(Object obj);
}

3.Set

set是存储不重复的无索引的集合,插入快,查询慢,底层用HashMap实现。

有无顺序
HashSet元素没有顺序
LinkedHashSet按照插入顺序存储
TreeSet按照元素的自然顺序(需要实现Comparable接口或者添加一个Comparator比较器)存储

4.List

特点
ArrayList数组实现,只在末尾插入和删除效率高
LinkedList链表实现,在任意地方插入和删除效率高
Vector线程安全,不涉及线程同步最好不用
Stack栈,push()入栈,pop()出栈,peek()返回栈顶元素不删除

5.Map

Map是键值对,键不能重复,键值可以是任意对象。

有无顺序
HashMap元素没有顺序
LinkedHashMap按照插入顺序(无参)或者访问顺序(有参)存储
TreeSet按照键的的自然顺序(需要实现Comparable接口或者添加一个Comparator比较器)存储

6.Collections类

Collections是一个工具类,包含了很多静态方法,大部分是用来处理List的。

1.排序操作(主要针对List接口相关)

  • reverse(List list):反转指定List集合中元素的顺序
  • reverse(List list):反转指定List集合中元素的顺序
  • shuffle(List list):对List中的元素进行随机排序(洗牌)
  • sort(List list):对List里的元素根据自然升序排序
  • sort(List list, Comparator c):自定义比较器进行排序
  • swap(List list, int i, int j):将指定List集合中i处元素和j出元素进行交换
  • rotate(List list, int distance):将所有元素向右移位指定长度,如果distance等于size那么结果不变

查找和替换(主要针对Collection接口相关)

  • binarySearch(List list, Objectkey):使用二分搜索法,以获得指定对象在List中的索引,前提是集合已经排序
  • max(Collection coll):返回最大元素
  • max(Collection coll, Comparator comp):根据自定义比较器,返回最大元素
  • min(Collection coll, Comparator comp):根据自定义比较器,返回最小元素
  • fill(List list, Object obj):使用指定对象填充
  • frequency(Collection Objecto):返回指定集合中指定对象出现的次数

其他

  • disjoint(Collection< ?> c1, Collection< ?> c2) - 如果两个指定 collection 中没有相同的元素,则返回 true。
  • addAll(Collection< ? super T> c, T… a) - 一种方便的方式,将所有指定元素添加到指定 collection 中。示范: Collections.addAll(flavors, “Peaches ‘n Plutonium”,
    “Rocky Racoon”);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值