集合什么是集合(Collection)?

集合就是‘由若干个确定的元素所构成的整体”.集合是存储对象的容器,可以存储任意数量、任意类型的对象。

在Java中,如果一个Java对象 可以在内部持有若干其他Java对象,并对外提供访问接口,我们把这种Java对象称为集合。
数组也可以看作是一种集合
String[] ss = newString[10]; //可以持有10个String对象ss[0] = “Hello”; //可以放入String对象
String first = ss[0]; //可以获取String对象

数组有如下限制:
数组初始化后大小不可变
数组只能按索弓|顺序存取

集合有其特殊性:集合存储的长度可变

集合只能存储对象(因为集合实际上存储的是对象的引用值也就是在堆中的地址,所以不能存放基本数据类型数据,必须经过包装类才可以存储)

Java提供了两种类型的集合接口:
Collection和Map,这两种都在java.util包下Collection是除Map外所有其他集合类的根接口Collection接口提供了2个子接口,List接口和Set接口

List接口继承自Collection接口,它规定实现它的类存储的是有序的、不唯一的集合元素同时提供了具体的实现类ArrayList和LinkedList

ArrayList:数组形式连续的存储空间,查询速度快,增删速度慢LinkedList:双向链表,不连续的存储空间,增删速度快,查询速度慢ArrayList:类实现了List接口,是基于动态数组的类,可存储null值

ArrayList创建:
List nameList =new ArrayList() ;

常用的一些方法:方法名称

说明
boolean add(E e)向集合中添加一个元素,E是元素的数据类型
void clear()删除集合中的所有元素
boolean contains(Object o)判断集合中是否存在指定元素
boolean isEmpty()判断集合是否为空boolean remove(Object o)从集合中删除一个指定元素
int size()返回集合中元素的个数
Object[] toArray()返回包含此集合中所有元素的数组

常用方法:
boolean add(E e)向集合中添加元素
E get(int index)返回指定索弓|处的元素
int size()获取此集合的长度
E remove(int index)删除指定索弓|处的元素,并返回被删除的元素boolean remove(E e)删除集合中第一个出现的指定元素

常用方法:
boolean contains(Object o) list中是否包含某个元素返回true或者falseE set(int index,E e)根据索引将元素数值改变(替换)
int indexOf(E e)返回在此集合中指定元素第一次出现的索引int lastIndexOf(E e)返回在此集合中指定元素最后- -次出现的索引boolean isEmpty()判断集合是否为空

Object[ toArray()将集合转换为数组
void clear( 将集合中的元素全部删除

LinkedList类
LinkedList类实现了List接口,是基于双向链表的类,可存储null值
LinkedL ist创建方式:
LinkedList linkedList = new LinkedList();LinkedList常用方法:
void addFirst(E e)将指定元素添加到此集合的开头
void addLast(E e)将指定元素添加到此集合的末尾

E getFirst()返回此集合的第一个元素
E getLast()返回此集合的最后一个元素
E removeFirst()删除此集合中的第一个 元素E removeLast(删除此集合中的最后一个元素

LinkedList遍历集合中元素:第一种遍历方式:普通for循环
for (int i = 0; i < linkedList.size(); i++){System. out. println(linkedList.get(i));}

LinkedList遍历集合中元素:
第二种遍历方式:foreach循环
for (String str : linkedList) [System. out.println(str) ;
LinkedListjJJFJ.

]
第三种遍历方式:迭代器Iterator itlinkedList. iterator() ;while (it. hasNext()) [System. out.pr intln(it.next()) ;
set接口
Set接口继承自Collection接口,它存储的是无序的、唯- -的集合元素HashSet类实现了Set接口,是基于HashMap实现,存储不重复、无序值HashSet是根据对象的哈希值来确定元素在集合中的存储位置的,元素在插入时就确定了存储位置,因此,元素在集合中存储的位置是固定的(无序是指输出顺序与存储顺序不-致),具有良好的存储和查找性能(存储速度快)。保证元素的唯一 性依赖于hashCode方法和equals方法。HashSet创建方式:HashSet set = new HashSet() ;]HashSet遍历集合中元素:第一种遍历方式:foreach循环for (String str : set) [Sys tem . out. println(str) ;while (it. hasNext()) f]HashSet遍历集合中元素:第二种遍历方式:迭代器Iterator it = set. iterator() ;Sys tem. out.pr intln(it.next()) ;
Map接口是一个根接口,它存储的是键-值对(key-value) ,其中key不允许重复, value允许重复HashMap类实现了Map接口,存储的是无序的键值对(key-value)●1.HashMap的key是用set集合来存放的, 所以想做到key不允许重复,key对应的类需要重写hashCode和equals方法●2.HashMap是线程不安全的●3.HashMap中元素的位置是不定时更新的,即元素位置不是固定的HashMap类创建方式:HashMap<String,String> map = new HashMap<String, String>();常用方法:V put(K key,V value)将指定的键与之关联的值存入HashMap中V get(K key)获取指定键所关联的值V remove(K key)删除]HashMap类遍历方式第一种遍历方式通过键值对Set集合遍历Iterator<Entry<String, String>> it = map.entrySet(). iterator() ;while (it.hasNext()) [Map.Entry<String, String> entry = (Map.Entry<String, String>) it.next() ;String key = entry .getKey() ;String value = entry.getValue();Sys tem. out.println(key + “:” + value) ;第二种遍历方式通过键Set集合遍历Iterator it2 = map.keySet() . iterator() ;while (it2 .hasNext()) [String key = it2.next() ;String value = map.get(key) ;Sys tem. out.println(key + “:” + value) ;]HashMap类遍历方式第三种遍历方式通过值Set集合遍历Iterator it3 = map.values() . iterator() ;while(it3. hasNext()) [String value = it3.next() ;System. out.println(value) ;什么是泛型泛型,即”参数化类型"。就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。泛型:把类型明确的工作推迟到创建对象或调用方法的时候才去明确的特殊的类型为什么使用泛型1.适用于多种数据类型执行相同的代码(代码复用)2.泛型中的类型在使用时指定,不需要强制类型转换(类型安全,编译器会检查类型)

2021-07-11相关推荐

  1. 2021/07/11 老男孩带你21周搞定Go语言 (二)

    P30 回顾,运算符和数组 var [30]int 长度30 int类型的数组 [30]int就代表类型 声明变量做初始化 [-]代表用后面的初始化,让go主机去数长度 数组遍历两种方式,一种是长度, ...

  2. 2021.07.11 【ABAP随笔】采购订单Message输出打印

    Title 采购订单Message输出打印 很多业务中需要在完成订单的时候来进行单据打印的输出操作,比如新建采购订单的时候,需要输出采购订单的PDF或者使用邮件功能来将采购订单发送给制定人员 SAP ...

  3. 2021/07/11 老男孩带你21周搞定Go语言 (一)

    P1 为什么要学习go go语言设计之初就考虑到多核CPU了,编译好执行,有几个核就跑满几个核 etcd代替zookeeper P2 课上所有物料介绍 typora的笔记里偏好设置,图片到当前的.as ...

  4. 2021双11上云狂欢节 | 爆款产品底价全面开售

    一年一度的双11狂欢节终于来啦!怎样用最少的钱获得最多的福利?下面这份攻略收藏好,这波活动快冲! 双11主会场:http://click.aliyun.com/m/1000304310/ 01 领取双 ...

  5. 武林大会之国产数据库风云榜-2021年11月

    神秘能量篇: 话说在盘古开天之后,有一种神秘的能量出现于天地,后人称之为"数据",人们先后利用骨制品.绳结.纸张.算盘等工具尝试存储并使用这股神秘的力量,又在计算机发明之后,信息可 ...

  6. 2021年11月份中国最具影响力的50位钧瓷匠人排行榜

    数据来源 钧瓷内参,钧瓷数据库 排名算法 上榜和排名算法与10项规则有关,其中和个人的知名度,影响力,用户评价,平台指数正相关: 制作流程 协同制作--协同评审--联合发布 制作成员 人民日报人民号, ...

  7. GMOJ - 2021.07.20【普及组】模拟赛C组 - 排座椅(seat)、传球游戏(ball)、立体图(drawing)、间谍派遣、seek

    文章目录 luogu博客链接 GMOJ - 2021.07.20[普及组]模拟赛C组 - 排座椅(seat).传球游戏(ball).立体图(drawing).间谍派遣.seek T1 排座椅(seat ...

  8. Neovim开发环境搭建(2021.07.01)

    Neovim开发环境搭建(2021.07.01) 一.搭建环境 Ubuntu 21.04 Neovim 0.4.4 二.Neovim安装 # 下载 neovim,如遇网络问题可以采用 https:// ...

  9. 2021.4.11 字节跳动实习笔试题---情报解密

    2021.4.11 字节跳动实习笔试题-情报解密 题目内容 题目内容: 给你一个字符串,该字符串中有数字,字母(字母只有大写字母)以及一些其他的字符(例如:%,.等),如果首字母为字母或者数字的话,就 ...

  10. Drupal7 将到2021年11月结束支持,请注意升级

    Drupal Association 宣布, 2011年1月释出的 Drupal 7 将到2021年11月结束支持,这意味着 Drupal 安全团队将不会继续为 Drupal 7 核心或模块.主题等提 ...

最新文章

  1. McAfee.VirusScan.CommandLine.V.6.0.3
  2. OpenCV学习:播放avi视频文件
  3. Treap与fhq_Treap模板(支持内存回收)
  4. Java当中捕获异常
  5. python获取钉钉日志数据_python3实现zabbix告警推送钉钉的示例
  6. spyder里import tensorflow报错显示没有tensorflow模块解决
  7. CCNP交换实验(5) -- 网关热备冗余
  8. 怎么把服务器上的文件备份到nas,如何将文件备份到NAS
  9. Python数据库(MySQL、MongoDB、Redis)编程
  10. Linux下shell脚本的4中执行方式
  11. python读取word图片_python 如何提取 word 内的图片
  12. win7修改本计算机端口,如何更改Windows7 的远程桌面端口3389
  13. 「鸡尾酒排序」不会?每天一遍,排序再见【超详细】
  14. 实现简易字符串压缩算法
  15. Tyvj-1338 QQ农场
  16. 2011年IT热点事件回顾 乔布斯逝世上榜
  17. 删除分页符时,保持页面格式不乱
  18. 红图新媒体发展(重庆)有限公司让你一分钟了解网站小知识
  19. SAP中非评估收货或不收货与收货时的应用区别和记账差异
  20. 计算机应用专业前景怎么样,计算机应用专业就业前景怎么样

热门文章

  1. 超有趣,在idea中加入emoji图像!
  2. FL Studio乐理教程之调式音阶
  3. 警告“未引用的形参/局部变量”的消除方法
  4. 多行文本溢出显示省略号(…) +css样式
  5. MOSFET驱动电路
  6. 动态ip代理:保护ip地址,这五种方法请收好
  7. Dev-C++的使用(一):下载、安装与基本使用
  8. Git之删除本地仓库
  9. JavaWeb----Ajax技术
  10. 操作系统实验六、系统内存使用统计