为了保存数量不确定的数据或者提供映射关系的数据,Java提供了集合类,也称作集合类,Collection和Map分别为两个根接口。两个接口体系的继承系如下图

(图片来源于网络)

Collection接口下有List、Set、Queue三个子接口(着重讲前两个接口)。Collection定义了如下一些操作集合的方面:

  • boolean add(Object o) //向集合中添加一个元素,添加成功返回true
  • boolean addAll(Collection c) //把集合c中的所有元素添加到指定集合,添加成功返回true
  • boolean remove(Object o)  //删除元素O,当集合中有多个元素O时,只删除第一个符合条件的元素,返回true
  • boolean removeAll(Collection c) //从集合中删除集合C中包含的所有元素
  • void clear() //清除集合中的所有元素
  • Iterator iterator //返回一个Iterator对象,用于变量集合里的元素
  • Object[] toArray() //将集合元素变成数组元素
  • int size()   //返回集合中元素的个数

 Set接口的所含有元素不能重复。Set常用的几个实现类

HashSet     无序地遍历成员,成员可为任意Object子类的对象,但如果覆盖了equals方法,同时注意修改hashCode方法。
LinkedHashSet HashSet的一个子类,按元素添加顺序访问集合中的元素。
TreeSet SortSet接口的实现类,支持子集等按要求顺序的操作
EnumSet 枚举类集合,所有元素必须是同一枚举类的枚举值,

  Set实现类性能比较:HashSet的性能比TreeSet的性能要好,TreeSet需要维持元素次序带来的开销。HashSet的子类LinkedHashSet,插入删除性能比HashSet要差一点,需要维持链表带来的开销,但是遍历的时候因为有链表,所以比HashSet稍快。EnumSet的性能最好的,就是有元素必须是同一个枚举类的局限性。这几个实现类都是线程不安全,同时访问需要自己保证Set集合的同步性。

List接口:List集合是一个元素有序、元素可以重复的集合,元素都有对应的索引值。

  • void add(int index,Object element) // 将元素element插入到index索引处
  • Object get(int index) //返回index索引出的元素
  • int indexOf(Object o) //返回对象o在List中第一次出现的位置索引
  • Object set(int index,Object element) //将index索引出的元素换成element

ArrayList实现类封装了一个动态的、允许再分配的Object[]数组。提供了两个方法重新分配Object[]数组。

    void ensureCapacity(int minCapacity) //增大minCapacity大小的数组长度

    void trimToSize()  //调整集合的数组长度为当前元素的个数

ArrayList例子

 public static void main(String[] args){
List<String> books=new ArrayList<>();
books.add(new String("第一本"));
books.add(new String("第二本"));
books.add(new String("第三本"));
books.add(new String("第四本"));
Iterator<String> it=books.iterator();
while(it.hasNext()){
String book=it.next();
System.out.println(book);
if(book.equals("第三本"))
{
it.remove();
}
}
System.out.println(books); }

集合遍历问题

  一、for循环遍历  

 public class CollectionTraversalFor {
public void forr(List<String> list){
for(int i=0;i<list.size();i++){
String book=list.get(i);
System.out.println(book);
}
}
}

  二、foreach遍历

 public class CollectionTraversalForeach {
public void Foreach(List<String> list){
for(String a :list){
System.out.println(a);
}
}
}

  三、Iterator遍历

 public class CollectionTraversalIterator {
public void iterator(List<String> list){
Iterator it=list.iterator();
while(it.hasNext()){
String book=(String) it.next();
System.out.println(book);
}
}
}

Map接口

Map集合用于保存具有映射关系的数据,有两组值,一组是key,另一组是value。

  Hashmap 是一个 最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。

JAVA集合的更多相关文章

  1. Java集合专题总结(1):HashMap 和 HashTable 源码学习和面试总结

    2017年的秋招彻底结束了,感觉Java上面的最常见的集合相关的问题就是hash--系列和一些常用并发集合和队列,堆等结合算法一起考察,不完全统计,本人经历:先后百度.唯品会.58同城.新浪微博.趣分 ...

  2. Scala集合和Java集合对应转换关系

    作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 用Scala编码的时候,经常会遇到scala集合和Java集合互相转换的case,特意mark一 ...

  3. java集合你了解多少?

    用了java集合这么久,还没有系统的研究过java的集合结构,今天亲自画了下类图,总算有所收获. 一.所有集合都实现了Iterable接口. Iterable接口中包含一个抽象方法:Iterator& ...

  4. 深入java集合学习1-集合框架浅析

    前言 集合是一种数据结构,在编程中是非常重要的.好的程序就是好的数据结构+好的算法.java中为我们实现了曾经在大学学过的数据结构与算法中提到的一些数据结构.如顺序表,链表,栈和堆等.Java 集合框 ...

  5. Java集合框架List,Map,Set等全面介绍

    Java集合框架的基本接口/类层次结构: java.util.Collection [I]+--java.util.List [I]   +--java.util.ArrayList [C]   +- ...

  6. Java集合框架练习-计算表达式的值

    最近在看<算法>这本书,正好看到一个计算表达式的问题,于是就打算写一下,也正好熟悉一下Java集合框架的使用,大致测试了一下,没啥问题. import java.util.*; /* * ...

  7. 【集合框架】Java集合框架综述

    一.前言 现笔者打算做关于Java集合框架的教程,具体是打算分析Java源码,因为平时在写程序的过程中用Java集合特别频繁,但是对于里面一些具体的原理还没有进行很好的梳理,所以拟从源码的角度去熟悉梳 ...

  8. Java 集合框架

    Java集合框架大致可以分为五个部分:List列表,Set集合.Map映射.迭代器.工具类 List 接口通常表示一个列表(数组.队列.链表 栈),其中的元素 可以重复 的是:ArrayList 和L ...

  9. Java集合概述

    容器,是用来装东西的,在Java里,东西就是对象,而装对象并不是把真正的对象放进去,而是指保存对象的引用.要注意对象的引用和对象的关系,下面的例子说明了对象和对象引用的关系. String str = ...

  10. 深入java集合系列文章

    搞懂java的相关集合实现原理,对技术上有很大的提高,网上有一系列文章对java中的集合做了深入的分析, 先转载记录下 深入Java集合学习系列 Java 集合系列目录(Category) HashM ...

随机推荐

  1. Unity性能优化之 Draw Call原理<转>

    Unity(或者说基本所有图形引擎)生成一帧画面的处理过程大致可以这样简化描述:引擎首先经过简单的可见性测试,确定摄像机可以看到的物体,然后把这些物体的顶点(包括本地位置.法线.UV等),索引(顶点如 ...

  2. sass基础用法

    嵌套: 1.选择器嵌套: 2.属性嵌套; .box {     border-top: 1px solid red;     border-bottom: 1px solid green; } .bo ...

  3. Oldboy-Homework-Week2.2

    一.关于Python全栈开发第二周所讲内容的回忆(上篇)6.列表(list).元组(tuple).字典(dictionary)7.字符串.及其字符串格式化输出8.for循环二.详细内容6.1列表:列表 ...

  4. ASP.NET下回车键的触发效果

    在ASP.NET下,在客户端触发回车键,默认调用了页面中第一个button,这有时是非常头痛的,比如页面的第一个按键是注销键时,想想也够可怕了. .net提供设置默认回车键的属性,this.Form. ...

  5. 初探React-Native

    props 大多数组件在创建时就可以使用各种参数来进行定制.用于定制的这些参数就称为props(属性). 以常见的基础组件Image为例,在创建一个图片时,可以传入一个名为source的prop来指定 ...

  6. PO,VO,BO,DTO,POJO(POCO),DAO的区别(转载)

    PO:persistant object持久对象 最形象的理解就是一个PO就是数据库中的一条记录.好处是可以把一条记录作为一个对象处理,可以方便的转为其它对象. BO:business object业 ...

  7. Thinkphp3.2.3 执行query命令 包括在模板中使用<php> </php>时 query的使用方法

    $sql="select * from `rjshop_productbase` where `id`=1"; $Model =M();$query=$Model->quer ...

  8. Javascript的自执行函数

    自执行函数其实也就是"立即执行的函数",它有四个特点:提高性能.利于压缩.避免冲突.依赖加载: 1.减少作用域查找 JS代码: // Anonymous function that ...

  9. 理解PagerAdapter的instantiateItem()方法

    在为ViewPager设置Adapter时肯定会用到PagerAdapter,Google Android文档对该类的定义如下: Base class providing the adapter to ...

  10. Android app应用多语言切换功能实现

    最近在做一个多语言切换的功能,类似于微信的语言切换,搜了下资料基本上都是以下这种: 1. 实现的效果 和微信类似,在设置界面打开切换语言的界面,选择语言后重启 HomeActivity,语言切换完成, ...