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() ...
随机推荐
- FastAPI 核心安全功能与模板渲染的完整示:登录、CSRF、JWT、会话、认证和缓存功能
以下是一个整合 FastAPI 核心安全功能与模板渲染的完整示例,基于多个技术文档的最佳实践,包含登录.CSRF.JWT.会话.认证和缓存功能: from datetime import dateti ...
- ubantu&windows搭建gis开发环境(qt+osg+osgearth+osgqt)
一.ubantu22.04中搭建地图开发环境(qt5.15.2 + osg3.7.0 + osgearth3.7.1 + osgqt) (1)下载安装qt5.15.2 : (2)下载编译安装osg3. ...
- App自动化环境部署
1.所需工具 Android-SDK:自行百度下载 Appium-Desktop:自行百度下载 真机或模拟器:自行准备 2.部署步骤 1)配置Android-SDK 解压Android-SDK压缩包 ...
- Model Context Protocol(MCP)在claude使用
定义 MCP通过统一的协议,使AI模型(如Claude.GPT等)能够动态调用外部工具(如数据库.API.本地文件等),并实现跨模型的上下文共享与协作 架构 客户端-服务器模型: MCP主机(Host ...
- 什么是 Write-Ahead Logging (WAL) 技术?它的优点是什么?MySQL 中是否用到了 WAL?
什么是 Write-Ahead Logging (WAL) 技术? Write-Ahead Logging (WAL) 是一种用于数据库系统的日志记录技术,它要求在对数据库进行任何修改之前,所有的修改 ...
- php版10大设计模式,软件工程必须掌握的姿势
作为一个半路出家的php萌新,在看公司老大们的代码时无时无刻不在感叹,老大就是老大,写的代码低耦合.易扩展,我怎么就想不出这写完美的实现方式,最近看了韩大佬的视频后才明白,原来这些都是业界前辈们总结提 ...
- [已解决] Compilation error ptxas fatal : Value ‘sm_30‘ is not defined for option ‘gpu-name‘
在用cmake编译cuda程序时,总是报Compilation error ptxas fatal : Value 'sm_30' is not defined for option 'gpu-nam ...
- 单服务器高性能模式:PPC与TPC
极客时间:<从 0 开始学架构>:单服务器高性能模式:PPC与TPC 1.引言 高性能是系统中最复杂的一环,其中磁盘.操作系统.CPU.内存.缓存.网络.编程语言.架构等,每个都有可能影响 ...
- lovelymem梭哈solar内存取证---Alex4nd3r
内存取证1 请找到rdp连接的跳板地址 flag{192.168.60.220} 内存取证2 请找到攻击者下载黑客工具的IP地址 控制台信息 flag{155.94.204.67} 内存取证3 攻击者 ...
- CF_div3_905(D/E/G2)
D. In Love 原题链接:https://codeforces.com/contest/1883/problem/D 题目大意: 维护一个区间的集合,然后每次加减区间后,判断集合中是否存在两个区 ...