Java基础(七)——eclipse、集合(容器)

本文介绍了Java集合框架,包括Iterable接口、迭代器、Collection接口、List、Set、Map接口及其常用实现类如ArrayList、LinkedList、HashMap和TreeSet。此外,还提及了Collections工具类的一些常用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

集合

1.       集合框架:

l  所谓的框架就是一个类库的集合。集合框架就是一个用来表示和操作集合的统一的架构,它包含了实现集合的接口

l  集合框架中不同的集合类有各自不同的数据结构,所以在使用中要根据应用的性能要求来选择不用的集合类;

l  集合类存放在java.util包中,今后进行编程时将大量使用集合类和相关接口;

l  集合框架中的主要接口:

Ø  Iterable:迭代器接口;

Ø  Collection:类集接口;

Ø  List:列表接口;

Ø  Set:数据集接口;

Ø  Queue:队列

Ø  Map:键—值对组合映射表

 

 

 

2.       Iterable接口和迭代器

l  Iterable接口

Ø  实现该接口允许对象成为“foreach(增强for循环)”语句的目标,即该集合对象允许迭代;

Ø  类集接口Collection是Iterable的子接口,所以所有类集对象可以迭代访问,而映射Map不行;

Ø  方法:

Iterable<T>iterator()

功能:返回一个在一组T类型的元素上进行迭代的迭代器;

l  迭代器是实现了Iterator/ListIterator接口的类的对象,可以通过遍历类集,访问操作其中的每个元素;

l  ListIterator扩展了父接口Iterator,允许双向遍历集合,并可以修改和删除元素;

3.       Collection接口

类集Collection接口定义的方法:

intsize()          boolean isEmpty()

booleancontains(Object o)           Iterator<E> iterator()

Object[]toArray()     boolean add(E e)

Booleanremove(Object o)     void clear()

4.       List、Set、Map接口

l  List接口扩展了Collection,特点:有序且可重复的;

l  Set接口扩展了Collection,特点:无序且不可重复的;

l  映射(map)是一个存储关键字/值对的对象。给定一个关键字,可查询得到它的值,关键字和值都可以是对象。映射不是Collection的子接口,所以本身不能使用迭代器来进行遍历。

5.       List容器

l  List容器特点:

Ø  List容器是有序的collection(也称为序列)。此接口的用户可以对List容器中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。List容器允许插入重复的值,包括null;

Ø  最常用的两个List接口的实现类是ArrayList和LinkedList;

l  ArrayList及常用API

Ø  ArrayList:底层实现的其实是一个动态数组;

Ø  ArrayList类扩展Abstract List并实现了List接口;

Ø  支持可随需增长的动态数组;

Ø  ArrayList构造方法:

u  ArrayList()

u  ArrayList(Collection c)------------传入带数据的序列

u  ArrayList(int capacity)-------------初始化序列大小

Ø  常用方法见API

l  LinkedList及常用API

LinkedList--------链表(双向);

LinkedList类扩展Abstract SequentialList并实现List接口;

LinkedList提供了一个链表数据结构;

LinkedList有两个构造方法:

         LinkedList()

        LinkedList(Collection c)

除了继承的方法外LinkedList类中还定义了一些有用的方法用于操作和访问容器中的数据,详见API。

l   

 

6.       Map接口

l  映射(map)是一个存储键、值对的对象。给定一个键值,可查询到它的值,键和值都是对象;

l  键必须是唯一的,值可以重复;

l  有些映射可以接收null键和null值,而有的不行;

l  表格中的接口支持映射:

     

接口

描述

Map

映射唯一关键字给值

Map.Entry

描述映射中的元素(关键字/值对)。是Map的一个内部类

SortedMap

扩展Map以便关键字按升序保持

l  Map接口映射唯一键到值;

l  键是以后用于检索值的对象。给定一个键和一个值,可以存储这个值到一个Map对象中,以后可以使用对应键检索它;

l  Map接口定义的方法:

Ø  int size()

Ø  boolean isEmpty()

Ø  boolean containsKey(Object key)

Ø  boolean containsValue(Object value)

Ø  V get(Object key)

Ø  V put(K key,V value)

Ø  V remove(Object key)

Ø  Collection<V> values()

Ø  Set<Map.Entry<K,V>>entrySet()--------返回包含的映射关系的Set视图

l  Map.Entry接口代表映射项(键—值对)类型,是Map的嵌套类型;

l  Map接口定义的entrySet()方法返回包含映射项Entry的集合(Set),集合中元素是Map.Entry类型;

l  Map.Entry接口定义的方法:

Ø  K getKey()

Ø  V getValue()

Ø  V setValue(V value)

l  HashMap类是基于哈希表的map接口的实现,并允许使用null键和null值(HashMap默认底层就是一个长度为16的Entry类型的数组)

       构造方法:

Ø  HashMap()

Ø  HashMap(Map m)

Ø  HashMap(int capacity)

Ø  HashMap(int capacity,float fillRatio)----fillRatio为填充因子,数据占整个表的%多少时,表示表满,通常为0.75

l  HashMap实现Map并扩展AbstractMap,本身并没有增加任何新的方法;

l  散列映射不保证它的元素的书顺序,元素加入散列映射的顺序并不一定是它们被迭代读出的顺序;

l  TreeMap类通过使用红黑树实现Map接口;

l  TreeMap提供按排序顺序存储键/值对的有效手段,同时允许快速检索;

l  不像散列映射,树映射保证它的元素按关键字升序排列;

l  TreeMap构造方法:

Ø  TreeMap()

Ø  TreeMap(Comparator  comp)

Ø  TreeMap(Map m)

Ø  TreeMap(SortedMap sm)

l  TreeMap实现SortedMap并且扩展AbstractMap,它本身并没有定义其他方法;

l  TreeMap的key存储引用类型数据,需要满足一定的条件

Ø  要么引用类型实现Comparable接口

Ø  要么为该TreeMap容器提供实现Comparator接口的比较器对象

7.       Set容器

l  Set容器是一个不包含重复元素的Collection,并且最多包含又一个null元素,它和List容器相反,Set容器不能保证其元素的顺序;

l  最常用的两个Set接口的实现类是HashSet和TreeSet;

l  HashSet及常用API

Ø  HashSet扩展AbstractSet并且实现Set接口;

Ø  HashSet使用散列表(哈希表)进行存储;

Ø  构造方法:

u  HashSet()

u  HashSet(Collection c)

u  HashSet(int capacity)

u  HashSet(int capacity,float fillRatio)

Ø  HashSet没有定义任何超过它父类提供的其他方法;

Ø  散列集合没有确保其元素的顺序呢,因为散列处理通常不参与排序;

l  HashSet的内部操作的底层数据是HashMap,只是我们操作的是HashMap的key;

 

l  TreeSet及常用API

l  TreeSet为使用树来进行存储的Set接口提供了一个工具,对象按升序存储,访问和检索很快;

l  在存储了大量的需要进行快速检索的排序信息的情况下,TreeSet是一个很好的选择;

l  构造方法:

         TreeSet()

         TreeSet(Collection c)

         TreeSet(Comparator comp)

          TreeSet(SortedSet ss)

l   TreeSet的内部操作的底层数据是TreeMap,只是我们操作的是TreeMap的key;

8.       Collections类及常用API

l  Collections----类集工具类,定义了若干用于类集和映射的算法,这些算法被定义为静态方法:

Ø  public static void sort(List<T> list)

Ø  public static int binarySearch(List<T> list,T key)

Ø  public static void reverse(List<?> list)

Ø  public static void shuffle(List<?> list)

Ø  public static void swap(List<?> list, int i, int j)

Ø  public static <T> void fill(List<? super T> list, T obj)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值