java collection详解_Java集合-Collection详解

基础知识:

什么是集合?

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

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

但数组和集合的区别呢?

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

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

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

e52a3afa73a0725dedbb1957e1ee4121.png

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

具体实现类,常用的有ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap等等,主要分为以下三类

f8fd8c6b4684002db0bf7aab7d7dd67c.png

从上图可知,Set集合是无序的,只能根据集合里的元素本身访问。

List集合是有序的,可以通过索引访问。

Map集合可通过每个元素的Key访问value.

下面列出了Collection接口下方法

5e80e0b6910e3d28afc955bae587bb72.png

大概看一眼,这些方法无非就是添加对象,移除对象,判断集合是不是空,清空容器,所以无需记忆。

有方法值的一提的是  当你需要把集合元素转成数组元素时候用Object[]  toArray() ,有个陷阱:注意注释部分,数组不能直接(String[])这样强制将数组变量转换,只有在使用使将元素转换为String,

首先看下List的这两个方法的说明:

Object[ ] toArray() :返回按适当顺序包含列表中的所有元素的数组(从第一个元素到最后一个元素)。

T[ ]  toArray(T[] a) :返回按适当顺序(从第一个元素到最后一个元素)包含列表中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型

Collection arr = new ArrayList();

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集合转数组举例

/*** 封装预处理参数解析并执行查询

*@paramsqlId

*@paramparam

*@return

*/

public List query(String sqlId, Mapparam){

LinkedList paramValue = new LinkedList();

String sql=getSqlByBeetl(sqlId, param, paramValue);returnDb.query(sql, paramValue.toArray());

}

补充下getSqlByBeetl如果要sql里需要Map的话,如下参考:

/*** 验证编码是否存在

*@paramoperatorid

*@paramtype

*@returnboolean

* 描述:新增角色组时operatorid为空,修改角色组时operatorid传值*/

public booleanvaliQbgjxwcqkxxno(String qbgjxwcqkxxno, String type){

Map param = new HashMap();

param.put("column", Jxwc.column_qbggyzfqkxxno);

param.put("table", Jxwc.table_name);

String sql=getSqlByBeetl(Jxwc.sqlId_select, param);

List 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图方法都能操作下这三种集合。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值