基础知识:

什么是集合?

集合是一个容器。把多个对象放入容器中。有一个水杯,你可以选择把水不断往里装,也可以选择装牛奶。但是不能两种不同的东西混合装一个杯子。集合这个容器里装的一定是同一类型的东西。(引用类型,不能是基本类型)

看到这个介绍,我们可能想到数组,数组要求的也是里面必须存放的是一种数据类型的结构。

数组和集合的区别呢?

数组大小是固定的,集合的大小理论上是不限定。

数组里的元素可以是基本类型,也可以是引用类型。集合只能放引用类型。

下图是集合家族的主要成员们(图来自百度)

由图可见,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详解的更多相关文章

  1. java集合框架详解

    java集合框架详解 一.Collection和Collections直接的区别 Collection是在java.util包下面的接口,是集合框架层次的父接口.常用的继承该接口的有list和set. ...

  2. java之集合Collection 详解之4

    package cn.itcast_04; public class Student { private String name; private int age; public Student() ...

  3. java之集合Collection详解之3

    package cn.itcast_03; public class Student { // 成员变量 private String name; private int age; // 构造方法 p ...

  4. java之集合Collection详解之2

    package cn.itcast_02; import java.util.ArrayList; import java.util.Collection; /* * 练习:用集合存储5个学生对象,并 ...

  5. Java集合框架详解(全)

    一.Java集合框架概述 集合可以看作是一种容器,用来存储对象信息.所有集合类都位于java.util包下,但支持多线程的集合类位于java.util.concurrent包下. 数组与集合的区别如下 ...

  6. Java—集合框架详解

    一.描述Java集合框架 集合,在Java语言中,将一系类的对象看成一个整体. 首先查看jdk中的Collection类的源码后会发现Collection是一个接口类,其继承了java迭代接口Iter ...

  7. JAVA集合类型详解

    一.前言 作为java面试的常客[集合类型]是永恒的话题:在开发中,主要了解具体的使用,没有太多的去关注具体的理论说明,掌握那几种常用的集合类型貌似也就够使用了:导致这一些集合类型的理论有可能经常的忘 ...

  8. Java集合-----Map详解

          Map与Collection并列存在.用于保存具有映射关系的数据:Key-Value      Map 中的 key 和  value 都可以是任何引用类型的数据      Map 中的 ...

  9. Java集合-----Set详解

    Set是没有重复元素的集合,是无序的 1.HashSet HashSet它是线程不安全的       HashSet常用方法:   add(E element)  将指定的元素添加到此集合(如果尚未存 ...

  10. Java集合-----List详解

    List中的元素是有序排列的而且可重复 1.LinkedList LinkedList是非线程安全的,底层是基于双向链表实现的       LinkedList常用方法:     toArray()  ...

随机推荐

  1. study Python3 【1】

    用VSCode来编辑Python代码,作为IDE使用,有点头晕. https://www.runoob.com/python3/python-vscode-setup.html有介绍.还有更好的博客介 ...

  2. 2021年扩展DevOps的6种方法

    2021年扩展DevOps的6种方法 加强devops流程的自动化 为了满足快速.高质量应用程序交付的需求,现代软件团队需要一种超越常规性能测试的方法.在这里,以devops为中心的方法可以提供更快. ...

  3. 房价预测数据清洗全流程:从数据采集到可视化分析(Python实战)

    在房价预测项目中,数据清洗是至关重要的环节.它不仅决定了模型的准确性,还直接影响后续分析的可靠性.本文将以波士顿房价数据集为例,通过Python的Pandas.Matplotlib等工具,详细讲解数据 ...

  4. Windows IntelliJ IDEA 快捷键终极大全

    自动代码 常用的有fori/sout/psvm+Tab即可生成循环.System.out.main方法等boilerplate样板代码 . 例如要输入for(User user : users)只需输 ...

  5. (原创)[开源][.Net Framework 4.5] SimpleMVVM(极简MVVM框架)更新 v1.1,增加NuGet包

    一.前言 意料之外,也情理之中的,在主业是传统行业的本人,技术的选型还是落后于时代. 这不,因现实需要,得将大库中的 WPF MVVM 相关部分功能拆分出来独立使用,想着来都来了,就直接开源得了,顺便 ...

  6. ESP-IDF教程1 开发环境

    1.开发环境 对于 ESP32 系列芯片的开发环境主要有如下几种方式: ESP-IDF(Espressif IoT Development Framework) Arduino PlatformIO ...

  7. MVVM绑定 填坑,必须在与 DependencyObject 相同的线程上创建 DependencySource

    场景:线程里面构建MVVM实体类,实体类包含 Brush 属性时,构建 SolidColorBrush 需要UI线程,否则会报 "必须在与 DependencyObject 相同的线程上创建 ...

  8. redis 配置redis.config

    目录 配置日志位置 配置日志位置 编辑redis.config文件 默认logfile的值为"",修改为指定位置后重启服务. logfile "/usr/local/lo ...

  9. Vue3的14种组件通信方式

    对于日常使用vue3开发项目的前端小伙伴来说,组件通信方式可以说是必会的基本功,今天带大家一起盘下vue3的通信方式. 我们这里按照组件的关系来划分.总共包含14中组件通信方式. 一.父子通信 pro ...

  10. MCP 实践系列:EdgeOne 在线部署HTML页面

    今天,我们将专门讲解一下 EdgeOne 在线部署 HTML 页面时所提供的 MCP 功能.这个功能对于个人用户来说非常实用,尤其适合一些小型应用场景,比如开发一个简单的小游戏,或者搭建一个小型网站, ...