一、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集合的方法及使用详解的更多相关文章

  1. Java 集合Collection与List的详解

    1.什么是集合 存储对象的容器,面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,存储对象,集合是存储对象最常用的一种方式. 集合的出现就是为了持有对象.集合中可以存储任意类型的 ...

  2. Java中compareTo()方法比较字符串详解

    中心:String 是字符串,它的比较用compareTo方法,它从第一位开始比较, 如果遇到不同的字符,则马上返回这两个字符的ascii值差值.返回值是int类型 1.当两个比较的字符串是英文且长度 ...

  3. hibernate集合映射inverse和cascade详解

    hibernate集合映射inverse和cascade详解   1.到底在哪用cascade="..."? cascade属性并不是多对多关系一定要用的,有了它只是让我们在插入或 ...

  4. Java线程创建形式 Thread构造详解 多线程中篇(五)

    Thread作为线程的抽象,Thread的实例用于描述线程,对线程的操纵,就是对Thread实例对象的管理与控制. 创建一个线程这个问题,也就转换为如何构造一个正确的Thread对象. 构造方法列表 ...

  5. Java学习-007-Log4J 日志记录配置文件详解及实例源代码

    此文主要讲述在初学 Java 时,常用的 Log4J 日志记录配置文件详解及实例源代码整理.希望能对初学 Java 编程的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激!源代码测试通过日期为:20 ...

  6. 【转】Java魔法堂:String.format详解

    Java魔法堂:String.format详解     目录     一.前言    二.重载方法     三.占位符     四.对字符.字符串进行格式化     五.对整数进行格式化     六. ...

  7. java线程池的使用与详解

    java线程池的使用与详解 [转载]本文转载自两篇博文:  1.Java并发编程:线程池的使用:http://www.cnblogs.com/dolphin0520/p/3932921.html   ...

  8. Java之Static静态修饰符详解

    Java之Static静态修饰符详解 Java之Static静态修饰符详解 一.特点 1.随着类的加载而加载,随着类的消失而消失,生命周期最长 2.优先于对象存在 3.被所有类的对象共享 4.可以直接 ...

  9. Java 反射 设计模式 动态代理机制详解 [ 转载 ]

    Java 反射 设计模式 动态代理机制详解 [ 转载 ] @author 亦山 原文链接:http://blog.csdn.net/luanlouis/article/details/24589193 ...

随机推荐

  1. Entity Framework知识小总结

    什么是Entity Framework EF是微软主推的数据存取技术,在实际开发中,现在通常使用EF来构建应用程序的数据存取层,它是一个开源的“对象/关系映射(ORM:Object Relationa ...

  2. 用Ruby实现的论坛灌水工具:CC98 Post Machine

    介绍 ZJU 的校网论坛 CC98 比较活跃.论坛只对校内网开放,而且账号跟学生绑定,每个学生注册的账号数量有限.『十大』是 CC98 的经典页面:基于关注的人数(回帖的用户数而不是回帖的数量)用算法 ...

  3. Android的PVPlayer介绍

    1 Player的组成 OpenCore的Player的编译文件是pvplayer/Android.mk,将生成动态库文件 libopencoreplayer.so.这个库包括了双方面的内容:一方是P ...

  4. MySQL - 常见的三种数据库存储引擎

    原文:MySQL - 常见的三种数据库存储引擎 数据库存储引擎:是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建.查询.更新和删除数据.不同的存储引擎提供不同的存储机制.索引技巧. ...

  5. The Python Challenge 题解

    仔细阅读,图画下面的提示(网页的 title 也是重要的提示信息,至少告诉你考察的对象是什么) 1. 238 >> 2**38 274877906944L 根据提示,在 URL 地址处,0 ...

  6. EasyUI学习之menu and button(菜单和按钮)

    前言 今天下午的天气感觉格外的气闷,整个人有一种黏糊糊的感觉,格外的不舒服.加之立即要放假了了,感觉自己全然坐不住呢(节前综合症么).只是学习还是的继续的. 原定计划这篇文章本来应该是关于search ...

  7. ASP.NET Core Razor 视图起始页 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core Razor 视图起始页 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Razor 视图起始页 上一章节中我们介绍了布局视图, ...

  8. 用WPF轻松打造iTunes CoverFlow效果

    原文:用WPF轻松打造iTunes CoverFlow效果 用WPF轻松打造iTunes CoverFlow效果                                             ...

  9. 一个JSP结果页面tomcat内存溢出

    如今,试验组的同事寻找新能源我看到一个奇怪的现象.一个tomcat应用,内只有一个简单的jsp页面,和这个jsp无论是什么页java代码(我想用这个jsp在她的网页测试server一对tomcat的最 ...

  10. Android Widget 小工具(两) 使用configure

    添加Widget在此之前需要做一些处理操作,可以使用 配置活动 在上一篇的实现基础上,加上配置活动(configure=activity).这时加入Widget时.会先打开一个Activity,进行配 ...