java集合的方法及使用详解
一、java集合的分类及相互之间的关系
Collection接口:向下提供了List和Set两个子接口
|------List接口:存储有序的,存储元素可以重复
|------ArrayList(主要的实现类)、LinkList(适用于频繁的插入删除操作)、Vector(古老的实现类,线程安全的)
|------Set接口:存储无序,元素不可重复
|------hashSet、LinkHashSet、treeSet
Map接口:存储 “键-值 ”对的数据
|------HashMap、LinkedHashMap、HashTable(子类:properties)
二、Collection集合常用的15中方法,下面分别对15种方法进行详解:
Collection coll=new ArayList(); //创建ArrayList集合对象
方法1. size() : 返回集合中元素的个数;
coll.size();
方法2. add(Object obj): 向集合中添加一个元素,可以是多种不同的类型;
coll.add(123);
coll.add("AA");
coll.add(new Date());
方法3. addAll(Collection coll): 将行参coll中包含的所有元素添加到当前集合中
Collection coll1=Arrays.asList(1,2,3); //将数组转化为一个集合
coll.addAll(coll1);
方法4. isEmpty(): 判断集合是否为空;
coll.isEmpty();
方法5. clear(): 清空集合元素;
coll.clear();
方法6. contains(): 判断集合中是否包含指定的obj元素,包含返回true,否则返回false;(判断依据:根据元素所在类的equals()方法进行判断,如果存入集合中的元素是自定义类的对象,要求自定义类要重写equal() 方法)
coll.contains("AA");
方法7. containsAll(Collection coll): 判断当前集合中是否包含coll中所有的元素;
Collection coll1=new ArrayList();
coll1.add("AA");
coll1.add(123);
coll.containsAll(coll1);
方法8. retainAll(Collection coll): 取当前集合和coll的共有的元素,返回给当前集(求两个集合的交集)
coll.retainAll(coll1);
方法9. remove(Object obj): 删除一个元素,删除成功返回true,否则返回false;
coll.remove("BB"); //返回false,因为集合coll中不存在元素BB
coll.remove("AA"); //返回true,元素AA删除成功
方法10. removeAll(Collection coll): 从当前集合中删除包含在集合coll中的元素(求两个集合的差集);
coll.removeAll(coll1)
方法11: equals(Object obj): 判断两个集合中所有元素是否完全相同;
Collection coll2=new ArrayList();
coll2.add(123);
coll1.equals(coll2);
方法12: hashCode(): 计算机集合中的hash值;
coll.hashCode();
方法13: toArray(): 将集合转化为数组;
Object obj=coll.toArray();
方法14. iterator(): 返回一个Iterator接口实现类的对象,实现集合的遍历;
Iterator iterator=coll.iterator();
iterator.next(); //返回集合元素
while(iterator.hasNext()){ terator.next(); } //实现元素迭代输出
二、下面讲解Collection集合的遍历:
集合正确的遍历方法:
方法1. Iterator迭代器遍历(常用):
Iterator i=coll.iterator();
while(i.hasNext()){ i.next(); }
如下图:i.next()方法最初指向的是Iterator对象集合的初始位置即橙黄色区域的位置,相当于栈 -1的位置,不包含任何集合元素,必须使用i.hasNext()方法判断下一个元素是否为空。
| null |
| 123 |
| AA |
| new Date() |
| new Person() |
错误的使用方法:
while(i.next()!=null){ i.next(); }
方法2. 增强for循环遍历:
for(Object i : coll){ i; }
方法三:简单for循环遍历:
for(int i=0;i<coll.size();i++){ coll.get(i); }
四、List相对于Collection新增加的方法
List list=new ArrayList();
方法1. Object set(int index , Object obj): 将位置为index的元素更改为obj元素
方法2. Object get(int index): 获取指定位置的元素
方法3. void add(int index , Object obj): 指定位置增加元素
方法4. boolean addAll(int index , Collection eles)
方法5. int indexOf(Object obj): 返回当前对象在集合中首次出现的位置,找不到返回-1
方法6. int lastIndexOf(Object obj): 返回obj元素最后一次出现在集合中的位置
方法7. Object remove(int index): 删除指定位置的元素
方法8. List subList(int fromIndex , int toIndex):获取从fromIndex到toIndex结束的左闭右开的List集合
java集合的方法及使用详解的更多相关文章
- Java 集合Collection与List的详解
1.什么是集合 存储对象的容器,面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,存储对象,集合是存储对象最常用的一种方式. 集合的出现就是为了持有对象.集合中可以存储任意类型的 ...
- Java中compareTo()方法比较字符串详解
中心:String 是字符串,它的比较用compareTo方法,它从第一位开始比较, 如果遇到不同的字符,则马上返回这两个字符的ascii值差值.返回值是int类型 1.当两个比较的字符串是英文且长度 ...
- hibernate集合映射inverse和cascade详解
hibernate集合映射inverse和cascade详解 1.到底在哪用cascade="..."? cascade属性并不是多对多关系一定要用的,有了它只是让我们在插入或 ...
- Java线程创建形式 Thread构造详解 多线程中篇(五)
Thread作为线程的抽象,Thread的实例用于描述线程,对线程的操纵,就是对Thread实例对象的管理与控制. 创建一个线程这个问题,也就转换为如何构造一个正确的Thread对象. 构造方法列表 ...
- Java学习-007-Log4J 日志记录配置文件详解及实例源代码
此文主要讲述在初学 Java 时,常用的 Log4J 日志记录配置文件详解及实例源代码整理.希望能对初学 Java 编程的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激!源代码测试通过日期为:20 ...
- 【转】Java魔法堂:String.format详解
Java魔法堂:String.format详解 目录 一.前言 二.重载方法 三.占位符 四.对字符.字符串进行格式化 五.对整数进行格式化 六. ...
- java线程池的使用与详解
java线程池的使用与详解 [转载]本文转载自两篇博文: 1.Java并发编程:线程池的使用:http://www.cnblogs.com/dolphin0520/p/3932921.html ...
- Java之Static静态修饰符详解
Java之Static静态修饰符详解 Java之Static静态修饰符详解 一.特点 1.随着类的加载而加载,随着类的消失而消失,生命周期最长 2.优先于对象存在 3.被所有类的对象共享 4.可以直接 ...
- Java 反射 设计模式 动态代理机制详解 [ 转载 ]
Java 反射 设计模式 动态代理机制详解 [ 转载 ] @author 亦山 原文链接:http://blog.csdn.net/luanlouis/article/details/24589193 ...
随机推荐
- SSH原理和使用
ssh 是什么 在 linux 上工作,ssh 是必须要了解的技术方法.它可以建立起多台主机之间的安全的加密传输,以进行远程的访问.操控.传输数据. SSH 為 Secure Shell 的縮寫.為建 ...
- C# 使用外部别名
原文:C# 使用外部别名 版权声明:博客已迁移到 http://lindexi.gitee.io 欢迎访问.如果当前博客图片看不到,请到 http://lindexi.gitee.io 访问博客.本文 ...
- MapReduce 编程 系列七 MapReduce程序日志查看
首先,假设须要打印日志,不须要用log4j这些东西,直接用System.out.println就可以,这些输出到stdout的日志信息能够在jobtracker网站终于找到. 其次,假设在main函数 ...
- WPF MeshGeometry3D
说说 MeshGeometry3D 里 常用的 四个属性. 先看看 MSDN 的 简介 先说说 Positions,介绍说 是顶点位置的集合,什么意思,看张图片. 这张简单描述了一个三位坐标系,里面有 ...
- yii2.0复选框默认选中
<?php $model->node = array('0','2') ;?> <? echo $form->field($model,'node')->che ...
- 权限控制方案之——基于URL拦截
概述: 在系统开发过程中需要考虑的一个重要的问题就是权限问题,权限问题也是安全问题的一个范畴,我们要求在用户登录系统之后,要控制用户可以访问的系统资源,使得用户只可以访问到系统事先分配好的资源:这里的 ...
- 七easy网络陷阱上当
网络犯罪可能开始与你或你的家人,因为无论出现什么样的警告信息,或异常体征,你还是做你通常做在互联网上,网络犯罪已经发生不知道.趋势科技收集了你所该避免的七种最常见的网络犯罪陷阱.让你和家人避免成为它们 ...
- iOS8的APP过渡过程
1. 2. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWluX3hpYW53ZWk=/font/5a6L5L2T/fontsize/400/fill/ ...
- mysqldump 定时备份数据(全量)
MYSQL 数据库备份有很多种(cp.tar.lvm2.mysqldump.xtarbackup)等等,具体使用哪一个还要看你的数据规模.下面给出一个表 #摘自<学会用各种姿态备份Mysql数据 ...
- WPF太阳、地球、月球运动轨迹模拟
原文:WPF太阳.地球.月球运动轨迹模拟 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/yangyisen0713/article/details/ ...