集合框架(Collections Frameworks)是Java 平台提F供的表示和操作集合的统一架构。
集合框架组成
集合框架包含以下3 个部分。
(1)集合接口
用于表示集合的抽象数据类型,允许集合操作独立于实现细节。接口多用于方法的参数类型。
(2)集合实现
实现了对应集合接口的具体类,本质上是可重用的数据结构。 实现类可以创建具体的对象。
(3)集合算法
算法是对实现了集合接口的对象执行具体计算(如查找、排序等)的方法。同一个方法可以用于相关集合接口的不同实现。这些方法可以看成是工具方法,一般都是static 方法,可以用类名直接调用。本质上,算法是可重用的功能。
Java中集合的接口和类都是泛型类型(参考 5分钟课堂:Java泛型类型 ),而算法大多是泛型方法(参考 5分钟课堂:Java泛型方法)。
集合接口
Java 集合框架中的核心集合接口中封装了不同的集合类型,允许集合的操作独立于集合的具体实现。
核心接口是Java 集合框架的基础,Java 集合框架中的核心接口主要包括:Collection、Set、List、Queue、Deque、SortedSet 和Map、SortedMap 等接口。
核心集合接口包含两个独立的继承树,集合(Collection)子树和映射(Map)子树。集(Set)是一种不包含重复元素的集合(Collection),而有序集(SortedSet)则是包含有序元素的集(Set)。
所有的核心集合接口都是泛型接口。在创建集合实例时,必须指定具体元素类型。
Java集合框架种主要的集合核心接口及部分实现类如图所示。
集合实现
集合实现是用于存储集合的数据对象,其类定义实现了对应的集合接口。Java 集合框架提供的通用功能实现类实现了Set,List 和Map 等接口,这些具体实现类可以满足大多数应用的需要。
集合算法
Java 集合框架提供了集合的排序、置换、常规数据操作、查找、组合等算法。这些算法都是多态算法,提供可重用的功能,并且,全部使用静态方法,方法的第一个参数为操作执行的集合。大多数算法都是针对List 对象,也有部分是操作Collection 对象。
例如,在工具类Collections中提供的算法有:
(1)根据元素的自然顺序对指定列表元素按升序进行排序
public static
(2)使用默认随机源对指定列表打乱元素的位置
public static void shuffle(List> list);
(3)使用二分搜索法搜索列表中的指定对象
public static
应用示例
下面例子以List的元素操作为例,实现了ArrayList
import java.util.*;
class DescendComparator
implements Comparator {
public int compare(String s1, String s2) {
return (s2.compareTo(s1));
}
}
public class TestCollectionsSearch {
public static void main(String[] args){
//使用List接口和实现类创建对象
List nameList = new ArrayList<>();
//添加元素对象
nameList.add("RJ软件");
nameList.add("BJ北京");
nameList.add("JT交通");
nameList.add("DX大学");
String toBeFind = "RJ软件";
//自然顺序排序
Collections.sort (nameList);
System.out.println ("\n自然顺序排序:");
for (String s : nameList)
System.out.println(s);
//查找
System.out.println("\n查找[" + toBeFind + "]");
int pos = Collections.binarySearch(nameList,toBeFind );
System.out.println ("\n查找结果位置:" + pos);
//使用比较器,逆序排序
System.out.println ("\n使用比较器,逆序排序:");
DescendComparator sComp =
new DescendComparator();
Collections.sort (nameList, sComp);
for (String s : nameList)
System.out.println(s);
//查找,也需要使用比较器参数
System.out.println("\n查找[" + toBeFind + "]");
pos = Collections.binarySearch(nameList, toBeFind, sComp);
System.out.println ("\n查找结果位置:" + pos);
}
}
运行结果如下:
自然顺序排序:
BJ北京
DX大学
JT交通
RJ软件
查找[RJ软件]
查找结果位置:3
使用比较器,逆序排序:
RJ软件
JT交通
DX大学
BJ北京
查找[RJ软件]
查找结果位置:0
本文暂时没有评论,来添加一个吧(●'◡'●)