当前位置: 首页 > news >正文

【Java-collection体系集合】

一、概念

1. 集合:是一种工具,也是一种容器,用于存储数量不等的多个对象。

2. 集合相关的接口和类位于 java.util 包中。

3. 学习集合从以下 4个点入手:

(1) 集合接口的特点

(2) 集合接口中功能方法

(3) 集合接口对应的实现类

(4) 集合的遍历方式

二、Collection集合体系

1. 父接口:Collection接口

(1) 特点:存储任意类型Object对象。

(2) 方法:

a. boolean add(Object o):o对象添加到集合中。

b. boolean contains(Object o):判断当前集合中是否包含 o元素,包含-true;否则-false。

c. boolean remove(Object o):将 o对象从当前集合中移除、删除。

d. int size() : 返回此集合中的元素的个数。

e.void clear():清空此集合是否为空。

f.boolean isEmpty():判断此集合是否为空。

g.Object[ ]  toArray(): 将此集合转换成数组。

(3) 实现类:没有直接的实现类,详见子接口。

(4) 遍历:详见子接口。 

2. 子接口:List接口

(1) 特点:存储任意类型的Object对象,有序、有下标、元素允许重复。

下标的范围: 0 ~ 有效元素个数 - 1 (0 ~ size - 1

(2) 方法:List是Collection的子接口,所以Collection接口中定义的方法List都可以使用,同时自身也定义了一些方法:

  • void add(int index,Object o)      //在index位置插入对象

boolean addAll(int index,Collection c)     //将c中元素一次性插入到集合中指定下标

Object get(int index)      //返回集合中指定位置的元素

  • Object remove(int index)       //移除index位置上的元素

Object set(int index, Object element)       //替换index位置上的元素

  • List subList(int fromIndex, int toIndex)       //返回集合中指定部分的元素

(3) 实现类:ArrayList,底层用数组实现的

a. ArrayList:底层数组实现的,查询操作时效率较高,增删操作效率较低。

JDK2.0版本,线程不安全,运行效率较高。

注意:JDK1.7版本,创建ArrayList对象时,并没有完成数组空间分配,而是第一次往集合中存储 

元素(add方法时),才完成数组空间分配,数组的初始长度为10,每次扩充为1.5倍。

b. Vector: 底层数组实现的,查询操作时效率较高,增删操作效率较低。

JDK1.0版本,线程安全,效率较低。

c. LinkedList:底层链表实现,查询操作时效率较低,增删效率较高。

线程不安全,运行效率较高。

面试题目:写出ArrayList  LinkedList区别?

(4) 遍历:将集合中元素进行一一的访问。

a. 下标遍历:通过集合中的下标对集合元素进行一一访问

for(int i=0;i<集合名.size(); i++){

        // 通过下标 i ,获取集合中每一个元素: get方法

}

b. forEach遍历:

for(数据类型 变量名 : 要遍历的集合名) {

        // 直接利用变量名操作集合元素即可

}

注意:变量的数据类型取决于集合的泛型类型。

forEach遍历的底层原理:迭代器遍历

I. 获取迭代器对象:

Iterator it = 集合名.iterator();

II. 迭代器中方法:

 hasNext() : 判断迭代器中是否还有要操作的元素,有-true;没有-false

 Object next() : 调用一次,返回迭代器中的下一个元素。

III.迭代器的遍历方式:

Iterator it = 集合名.iterator();

// 遍历迭代器

while(it.hasNext()){

        // 通过next方法获取迭代器中下一个元素

        System.out.println(it.next());

}

3. 泛型

(1) 泛型集合:安全性的集合,可以对集合中数据统一管理,并且强制约束集合的元素类型一致。

List<数据类型> 集合名 = new ArrayList<数据类型>();

(2) 泛型类:

 a. 语法: class 类名<泛型标识1,泛型标识2>{

                        // 将 泛型标识作为数据类型应用

                }

注意:通常用:K/V/E/T等作为泛型标识。

b. 应用:在创建对象时,需要制定泛型的数据类型。

类名<数据类型> 对象名 = new 类名<数据类型>();

注意:前后数据类型要一致;

基本数据类型不能作为泛型的类型,需要应用基本数据类型对应的包装类型;

如果创建对象时,没有指定泛型的类型,则默认为Object类型;

如果定义类型有多个泛型标识,要么按顺序指定所有的泛型数据,要么都不指定。

4. 集合工具类:Collections

(1) Collections:用于操作集合元素的工具类,类中提供了大量的静态方法用于操作集合元素,例如元素排序、倒置等操作。

(2) 常用的方法:

a. static void reverse(List list):将集合中元素进行倒置。

b. static void shuffle(List list):对集合中元素进行随机显示。

c. static void sort(List list): 对集合中元素进行排序。

注意:如果参与排序的集合中元素为自定义类型的对象,则对应的类需要实现 

java.lang.Comparable接口,同时实现接口中compareTo方法,指定排序规则。

I. 第一种比较器 java.lang.Comparable接口,接口中有一个 int compareTo(T t) ,将当前对象this

 t 进行比较,参与比较的对象对应的类需要实现此接口,同时实现此方法。-》内置比较器

II. 第二种比较器: java.util.Comparator 接口,接口中定义了 int compare(T o1, T o2) ,o1o2

行比较,定义在参与比较对象的类的外面。 ---》外置比较器

面试题目:写出 Collection  Collections的区别。

解析:Collection Java Collection集合体系的父接口,有ListSet等子接口。

Collections:是操作集合元素的工具类,类中定义大量的静态方法。

http://www.dtcms.com/a/483757.html

相关文章:

  • 网站上传面板上海网站开发技术最好公司
  • 免费网站开发自己注册域名怎么注册
  • 网站可信网店运营ppt
  • 信息安全的定义与重要性
  • 公司做网站服务费怎样做账H5平台网站建设
  • 数据结构1:顺序表
  • 网站外链要怎么做黑马程序员学费多少钱
  • 江苏网站建设怎么样做本地婚恋网站
  • 在线培训网站温州网站建设制作设计公司
  • 做公众号推送的网站seo的含义是什么意思
  • typescript 写鼠标监听事件应该怎么写
  • 著名设计案例网站怎么样做英文网站
  • 搬瓦工如何搭建做网站企业 网站备案 法人
  • 分割等和子集 Java
  • 景点网站应该怎么做目前做win7系统最好的网站
  • 漳州市建设局网站6机械设计网站有哪些
  • 3.git的分支携带问题是什么?怎么解决?
  • 网站建设与维护面试免费网站申请域名39939cn
  • Chrome和IE获取本机ip地址
  • 个人网站建设及实现外贸是什么工作
  • 【下载安装】navicate
  • 河北保定建设集团招聘信息网站游戏推广赚佣金
  • 找人制作网站 优帮云wordpress apache 伪静态
  • 大模型前世今生(十四):保持训练稳定性
  • Python基础 -- Python生成器表达式 next函数与多值筛选实战
  • 珠海品牌型网站建设网页设计的发展
  • 背景全屏网站建筑网站设计大全
  • Zabbix 安装与配置
  • Java Socket编程深度解析:从网络基础到高性能通信架构的全景实践
  • 网站建设湖南岚鸿建设免费推广自己的网站