为了保存数量不确定的数据或者提供映射关系的数据,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. # git 操作拾遗

    如何删除本地库 find . -name ".git" | xargs rm -Rf fatal: refusing to merge unrelated histories gi ...

  2. phoneGap蓝牙设备链接打印操作插件

    前台 bluetooth.js /*Copyright 2013  101.key Licensed under the Apache License, Version 2.0 (the " ...

  3. 【HDU】1599 find the mincost route

    题意 \(n(1 \le n \le 100)\)个点\(m(1 \le m \le 1000)\)条加权边的无负环无向图,求一个最小环. 分析 加入有一个环,其编号最大的点为\(L\),那么这个环可 ...

  4. linux下 SVN切换仓库地址命令

    svn switch --relocate (Old Repository Root) (New Repository Root)

  5. spring和Hibernate整合

    首先导入spring和Hibernate的jar包,以及JDBC和c3p0的jar包, 然后就是Hibernate的XML配置文件,不需要加入映射文件,这里用spring容器管理了. Hibernat ...

  6. Ionic实战 自动升级APP(Android版)

    Ionic 框架介绍 Ionic是一个基于Angularjs.可以使用HTML5构建混合移动应用的用户界面框架,它自称为是"本地与HTML5的结合".该框架提供了很多基本的移动用户 ...

  7. Spring MVC的配置文件(XML)的几个经典案列

    1.既然是配置文件版的,那配置文件自然是必不可少,且应该会很复杂,那我们就以一个一个的来慢慢分析这些个经典案列吧! 01.实现Controller /* * 控制器 */ public class M ...

  8. ajax post提交form表单 报400错误 解决方法

    昨天晚上做项目遇到了一个奇怪的问题,我用ajax提交一个form表单,后台Java方法用的是一个实体接,但是他根本不进方法体中,直接给我一个400的错误,一开始我以为是我路径的问题(尴尬),结果直接访 ...

  9. TreeView 使用方法:(在View.Details模式下)

    1.建立TreeView的標題         2.建立TreeView的Item         3.在TreeView的Item中的建立SubItem                  如果將各部 ...

  10. Android课程---关于Service的学习(后台运行)

    MainActivity.java package com.hanqi.test2; import android.content.ComponentName; import android.cont ...