博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java--集合框架
阅读量:5047 次
发布时间:2019-06-12

本文共 2772 字,大约阅读时间需要 9 分钟。

1、集合框架的概述

集合和数组的区别:

》数组的 长度固定,集合长度可变

》数组只能通过下标访问元素,类型固定,而有的集合可以通过任意类型查找所映射的具体对象

Collection

 

Collection是集合接口 

   |————Set子接口:无序,不允许重复。    |————List子接口:有序,可以有重复元素。

    区别:Collections是集合类

    Set和List对比:

    Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。
    List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。

    Set和List具体子类:

    Set
     |————HashSet:以哈希表的形式存放元素,插入删除速度很快。

    List

     |————ArrayList:动态数组
     |————LinkedList:链表、队列、堆栈。

    Array和java.util.Vector

    Vector是一种老的动态数组,是线程同步的,效率很低,一般不赞成使用。

 (1) 单元素添加、删除操作: 

 
boolean add(Object o):将对象添加给集合 
 
boolean remove(Object o): 如果集合中有与o相匹配的对象,则删除对象o 
 
(2) 查询操作: 
 
int size() :返回当前集合中元素的数量 
 
boolean isEmpty() :判断集合中是否有任何元素 
 
boolean contains(Object o) :查找集合中是否含有对象o 
 
Iterator iterator() :返回一个迭代器,用来访问集合中的各个元素 
 
(3) 组操作 :作用于元素组或整个集合 
 
boolean containsAll(Collection c): 查找集合中是否含有集合c 中所有元素 
 
boolean addAll(Collection c) : 将集合c 中所有元素添加给该集合 

private List coursesToSelect;Course[] course = {
new Course("3", "Java编程"),new Course("4", "C++")};coursesToSelect.addAll(Arrays.asList(course));

void clear(): 删除集合中所有元素 

 
void removeAll(Collection c) : 从集合中删除集合c 中的所有元素 
 
void retainAll(Collection c) : 从集合中删除集合c 中不包含的元素 
 
(4) Collection转换为Object数组 : 
 
Object[] toArray() :返回一个内含集合所有元素的array 
 
Object[] toArray(Object[] a) :返回一个内含集合所有元素的array。运行期返回的array
和参数a的型别相同,需要转换为正确型别。 

Collection不提供get()方法。如果要遍历Collectin中的元素,就必须用Iterator.

List接口:

面向位置的操作包括插入某个元素或 Collection 的功能,还包括获取、除去或更改元素

的功能。在 List 中搜索元素可以从列表的头部或尾部开始,如果找到元素,还将报告元素所
在的位置 : 
 
void add(int index, Object element): 在指定位置index上添加元素element 
 
boolean addAll(int index, Collection c): 将集合c的所有元素添加到指定位置index 
 
Object get(int index): 返回List中指定位置的元素 
 
int indexOf(Object o): 返回第一个出现元素o的位置,否则返回-1 
 
int lastIndexOf(Object o) :返回最后一个出现元素o的位置,否则返回-1 
 
Object remove(int index) :删除指定位置上的元素 
 
Object set(int index, Object element) :用元素element取代位置index上的元素,并且
返回旧的元素 

LinkedList类和ArrayList类:

LinkedList类添加了一些处理列表两端元素的方法。 

(1) void addFirst(Object o): 将对象o添加到列表的开头 
 
void addLast(Object o):将对象o添加到列表的结尾 
 
(2) Object getFirst(): 返回列表开头的元素 
 
Object getLast(): 返回列表结尾的元素 
 
(3) Object removeFirst(): 删除并且返回列表开头的元素 
 
Object removeLast():删除并且返回列表结尾的元素 
 
(4) LinkedList(): 构建一个空的链接列表 
 
LinkedList(Collection c): 构建一个链接列表,并且添加集合c的所有元素 
 
“使用这些新方法,您就可以轻松的把 LinkedList 当作一个堆栈、队列或其它面向端点的数
据结构。” 

Set接口:

Set 接口继承 Collection 接口,而且它不允许集合中存在重复项,每个具体的 Set 实现类

依赖添加的对象的 equals()方法来检查独一性。Set接口没有引入新方法,所以Set就是一
个Collection,只不过其行为不同。

Comparable接口和Comparator接口:

在“集合框架”中有两种比较接口:Comparable接口和Comparator接口。像String和Integer

等Java内建类实现 Comparable接口以提供一定排序方式,但这样只能实现该接口一次。对
于那些没有实现Comparable接口的类、或者自定义的类,您可以通过 Comparator接口来定
义您自己的比较方式。

Comparable接口 :

(1) int compareTo(Object o): 比较当前实例对象与对象o,如果位于对象o之前,返回负

值,如果两个对象在排序中位置相同,则返回0,如果位于对象o后面,则返回正值

 Comparator接口:

(1)int compare(Object o1, Object o2): 对两个对象o1和o2进行比较,如果o1位于o2

的前面,则返回负值,如果在排序顺序中认为o1和o2是相同的,返回0,如果o1位于o2的
后面,则返回正值 

 

转载于:https://www.cnblogs.com/Nyan-Workflow-FC/p/6389278.html

你可能感兴趣的文章
openSuse beginner
查看>>
Codeforces 620E(线段树+dfs序+状态压缩)
查看>>
Windows7中双击py文件运行程序
查看>>
Market entry case
查看>>
bzoj1230 开关灯 线段树
查看>>
LinearLayout
查看>>
学习python:day1
查看>>
css3动画属性
查看>>
第九次团队作业-测试报告与用户使用手册
查看>>
Equal Sides Of An Array
查看>>
CentOS笔记-用户和用户组管理
查看>>
Mongodb 基本命令
查看>>
Qt中QTableView中加入Check列实现
查看>>
“富豪相亲大会”究竟迷失了什么?
查看>>
控制文件的备份与恢复
查看>>
返回代码hdu 2054 A==B?
查看>>
Flink独立集群1
查看>>
iOS 8 地图
查看>>
20165235 第八周课下补做
查看>>
[leetcode] 1. Two Sum
查看>>