Java集合-Collection详解
基础知识:
什么是集合?
集合是一个容器。把多个对象放入容器中。有一个水杯,你可以选择把水不断往里装,也可以选择装牛奶。但是不能两种不同的东西混合装一个杯子。集合这个容器里装的一定是同一类型的东西。(引用类型,不能是基本类型)
看到这个介绍,我们可能想到数组,数组要求的也是里面必须存放的是一种数据类型的结构。
但数组和集合的区别呢?
数组大小是固定的,集合的大小理论上是不限定。
数组里的元素可以是基本类型,也可以是引用类型。集合只能放引用类型。
下图是集合家族的主要成员们(图来自百度)

由图可见,Collection接口和Map接口是两个老大。Collection接口下面又生出来了Set接口(无序),List接口(有序),queue接口。Map接口保存的是有映射关系的数据。Map里的子类都有一个共同的特征就是里面数据都是key-value.举例,语文-80,数学-78,科目是不能重复的,分数是可以重复的,所以,Map里的key不能重复,value可重复。需要查分数(value),就通过科目(Key)来取。
具体实现类,常用的有ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap等等,主要分为以下三类

从上图可知,Set集合是无序的,只能根据集合里的元素本身访问。
List集合是有序的,可以通过索引访问。
Map集合可通过每个元素的Key访问value.
下面列出了Collection接口下方法

大概看一眼,这些方法无非就是添加对象,移除对象,判断集合是不是空,清空容器,所以无需记忆。
有方法值的一提的是 当你需要把集合元素转成数组元素时候用Object[] toArray() ,有个陷阱:注意注释部分,数组不能直接(String[])这样强制将数组变量转换,只有在使用使将元素转换为String,
首先看下List的这两个方法的说明:
Object[ ] toArray() :返回按适当顺序包含列表中的所有元素的数组(从第一个元素到最后一个元素)。
<T> T[ ] toArray(T[] a) :返回按适当顺序(从第一个元素到最后一个元素)包含列表中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型
Collection<String> arr = new ArrayList<String>();
arr.add("a");
arr.add("b");
arr.add("b");//可以添加重复的对象
// String[] str = (String[])arr.toArray();//error
Object[] obj = arr.toArray();//第一种方法
String[] obj1 = arr.toArray(new String[3]);//第二种方法
Db.query()第二个是多个不确定的参数,多个参数可以被作为数组传进来。List集合转数组举例
/**
* 封装预处理参数解析并执行查询
* @param sqlId
* @param param
* @return
*/
public <T> List<T> query(String sqlId, Map<String, Object> param){
LinkedList<Object> paramValue = new LinkedList<Object>();
String sql = getSqlByBeetl(sqlId, param, paramValue);
return Db.query(sql, paramValue.toArray());
}
补充下getSqlByBeetl如果要sql里需要Map的话,如下参考:
/**
* 验证编码是否存在
* @param operatorid
* @param type
* @return boolean
* 描述:新增角色组时operatorid为空,修改角色组时operatorid传值
*/
public boolean valiQbgjxwcqkxxno(String qbgjxwcqkxxno, String type){
Map<String, Object> param = new HashMap<String, Object>();
param.put("column", Jxwc.column_qbggyzfqkxxno);
param.put("table", Jxwc.table_name);
String sql = getSqlByBeetl(Jxwc.sqlId_select, param);
List<Jxwc> list = Jxwc.dao.find(sql,qbgjxwcqkxxno);
int size = list.size();
if("add".equals(type)){
if(size == 0){
return true;
}
}else{
if(size <= 1){
return true;
}
}
return false;
}
Collection接口是List,Set,Queue接口的父接口,所以Collection图方法都能操作下这三种集合。
Java集合-Collection详解的更多相关文章
- java集合框架详解
java集合框架详解 一.Collection和Collections直接的区别 Collection是在java.util包下面的接口,是集合框架层次的父接口.常用的继承该接口的有list和set. ...
- java之集合Collection 详解之4
package cn.itcast_04; public class Student { private String name; private int age; public Student() ...
- java之集合Collection详解之3
package cn.itcast_03; public class Student { // 成员变量 private String name; private int age; // 构造方法 p ...
- java之集合Collection详解之2
package cn.itcast_02; import java.util.ArrayList; import java.util.Collection; /* * 练习:用集合存储5个学生对象,并 ...
- Java集合框架详解(全)
一.Java集合框架概述 集合可以看作是一种容器,用来存储对象信息.所有集合类都位于java.util包下,但支持多线程的集合类位于java.util.concurrent包下. 数组与集合的区别如下 ...
- Java—集合框架详解
一.描述Java集合框架 集合,在Java语言中,将一系类的对象看成一个整体. 首先查看jdk中的Collection类的源码后会发现Collection是一个接口类,其继承了java迭代接口Iter ...
- JAVA集合类型详解
一.前言 作为java面试的常客[集合类型]是永恒的话题:在开发中,主要了解具体的使用,没有太多的去关注具体的理论说明,掌握那几种常用的集合类型貌似也就够使用了:导致这一些集合类型的理论有可能经常的忘 ...
- Java集合-----Map详解
Map与Collection并列存在.用于保存具有映射关系的数据:Key-Value Map 中的 key 和 value 都可以是任何引用类型的数据 Map 中的 ...
- Java集合-----Set详解
Set是没有重复元素的集合,是无序的 1.HashSet HashSet它是线程不安全的 HashSet常用方法: add(E element) 将指定的元素添加到此集合(如果尚未存 ...
- Java集合-----List详解
List中的元素是有序排列的而且可重复 1.LinkedList LinkedList是非线程安全的,底层是基于双向链表实现的 LinkedList常用方法: toArray() ...
随机推荐
- C# Socket的使用方法 及 简单实例
核心: 在服务器端和客户端的两个Socket实例,共同维持一个连接,而我们还需要一个服务端绑定了特定端口号的固定的serverSocket,用来监听远方clientSocket的申请,并为这个申请建立 ...
- 【软件】基于JSP和Bootstrap的潇湘博客平台
潇湘博客平台 XiaoXiangBlog 说明 Eclipse 项目 - Version: 2020-06 (4.16.0). JDK8. 潇湘博客(XiaoXiangBlog) 一个简单的Java ...
- 静态批处理/动态批处理/GPU Instancing /SRP Batcher的详细剖析
静态批处理[1] 定义 标明为 Static 的静态物件,如果在使用相同材质球的条件下,在Build(项目打包)的时候Unity会自动地提取这些共享材质的静态模型的Vertex buffer和Inde ...
- 🎯Vercel-从零到上线的云端部署神器
简介 Vercel是一个专注于前端和全栈应用部署的云端平台,由Zeit公司开发.它以零配置部署.全球CDN加速和对主流框架的深度支持为核心优势,成为开发者快速上线项目的首选工具.无论是个人博客.企业官 ...
- 关于while循环与for循环
首先看for循环 def test(): print('1') print('2') for i in range(3): test() 执行后的结果,按照下图所示,for循环就是把指定的函数重复执行 ...
- strftime()函数的用法
strftime()函数的用法 strftime()函数可以把YYYY-MM-DD HH:MM:SS格式的日期字符串转换成其它形式的字符串.strftime()的语法是strftime(格式, 日期/ ...
- AdaBoost算法的原理及Python实现
一.概述 AdaBoost(Adaptive Boosting,自适应提升)是一种迭代式的集成学习算法,通过不断调整样本权重,提升弱学习器性能,最终集成为一个强学习器.它继承了 Boosting ...
- MySql的information_schema.processlist库学习之"如何检测出大数据sql查询"
1.如何通过MySql检测出大数据sql查询 一般数据库都会存在:information_schema数据库 检测出大数据sql查询[time时间越长说明,数据量越大,要根据公司的限度来衡量,我的思路 ...
- 基于onnxruntime结合PyQt快速搭建视觉原型Demo
我在日常工作中经常使用PyQt和onnxruntime来快速生产demo软件,用于展示和测试,这里,我将以Yolov12为例,展示一下我的方案. 首先我们需要使用Yolov12训练一个模型,并 ...
- 阿里云手工配置Nginx
Nginx服务器是网站反向代理,负载均衡,以及动静分离的神器,由于是第一次在阿里云上配置这个,花费了大半天,终于配置成功了.下面简要的介绍下其流程,以备后面又搞忘了.前提是自动装装不上 购买阿里云服务 ...