一、JAVA集合类

为了保存数量不确定的数据,以及保存具有映射关系的数据(关联数组),java提供了集合类。所有集合类位于java.util包下。

集合类就像容是器,现实生活中容器的功能,无非就是添加对象、删除对象、清空容器、判断容器是否为空等,集合类就为这些功能提供对应的方法。

java集合类是由两个接口Collection 和 Map派生而出

Collection

Map

Set

Queue

List

EnumMap

IdentityHashMap

HashMap

LinkedHashMap

Hashtable

Properties

SortedMap

TreeMap

WeakHashMap

EnumSet

SortedSet

HashSet

TreeSet

LinkedHashSet

Deque

PriorityQueue

ArrayDeque

LinkedList

ArrayList

Vector

Stack

Map实现类用于保存具有映射关系的数据。

Set 无法记住添加元素的顺序,所有元素不能重复且无序

List 像一个长度可变的数组

二、Collection和Iterator接口

Iterator类与Collection、Map不同,主要用于遍历Collection中的元素,其对象也被称为迭代器

1、Collection使用如下:

  • Boolean add(Object o )   添加对象,成功添加返回true
  • Boolean addAll(Collection c)  将集合C中所有元素加入,成功返回true
  • Void clear();   清空容器
  • Boolean contains(Object o )  返回集合里是否包含指定元素
  • Boolean containsAll(Collection c)  返回是否包含集合内所有元素
  • Boolean isEmpty()   返回集合是否为空
  • Iterator iterator();  返回一个Iterator对象,用于遍历集合里的元素
  • Boolean remove(Object o)  删除集合中指定元素,如果有多个o元素时,删除第一个符合条件的元素
  • Boolean removeAll(Collection c)  删除c中包含的所有元素
  • Boolean retainAll(Collection c )  删除集合中不属于集合c的元素
  • Int size()   返回集合元素个数
  • Object[] toArray()  将集合转化为数组,集合元素变为数组元素

Collection实现类都重写了toString()方法,使用System.out.println()输出集合对象时,将输出[ele1,ele2…….]的形式。

2、遍历Collection

遍历过程中不要使用集合的remove对集合进行删除操作,会抛出异常

Iterator迭代器的使用

  • Boolean hasNext()      如果被迭代的集合元素还没有遍历完,返回TRUE
  • Object next();         返回集合中的下一个元素(传值不传对象)
  • Void remove()        从集合中删除上一个用next返回的元素
  • Void forEachRemaining(Consumer action)  可使用Lambda表达式来遍历

程序示范4种迭代方式:

public static void main(String[] args) {
………………………
//获取books集合对应的迭代器
Iterator it = books.iterator(); //1.使用Lambda表达式遍历集合
books.forEach(obj->System.out.println(“迭代集合元素:”+obj)); //2.使用Iterator遍历集合
while(it.hasNext()) { //迭代是否结束
//返回Object类型的数据,需要强制转换
String book = (String)it.next();
System.out.println(book);
if(book.equals("迭代器")) {
//从集合中删除book对应的元素
it.remove();
}
......
}
………. //3.使用Lambda表达式遍历Iterator
it.forEachRemaining(obj->System.out.println(“迭代集合元素:”+obj)); //4.使用foreach循环遍历集合元素
for(Object obj : books){
String book = (String)obj;
……….
}
}

3、Predicate操作集合

  • removeIf(Predicate filter)方法
//批量删除符合条件的元素(过滤集合),删除所有长度小于10 的字符串元素

Book.removeIf(ele -> ((String)ele).length()<10);
  • 使用Predicate可以充分简化集合的运算

例如:Predicate的test方法可以判断该对象是否满足Predicate指定的条件,对于统计集合中符合某个条件的元素有多少,只需要构造一个方法:

public static void main(String[] args) {
//统计包含“Predicate”的元素
System.out.println(calAll(books,ele -> ((String)ele).contains("Predicate")));
//统计包含“test”的元素
System.out.println(calAll(books,ele -> ((String)ele).contains("test")));
//统计字符串大于10的元素
System.out.println(calAll(books,ele -> ((String)ele).length()>10));
}
public static int calAll(Collection books,Predicate p) {
int count = 0;
for(Object obj : books) {
if(p.test(obj)) { //满足Predicate则++
count++;
}
}
return count;
}

JAVA编程学习之JAVA集合的更多相关文章

  1. Java编程学习知识点分享 入门必看

    Java编程学习知识点分享 入门必看 阿尔法颜色组成(alpha color component):颜色组成用来描述颜色的透明度或不透明度.阿尔法组成越高,颜色越不透明. API:应用编程接口.针对软 ...

  2. java虚拟机学习-触摸java常量池(13-1)

    java虚拟机学习-深入理解JVM(1) java虚拟机学习-慢慢琢磨JVM(2) java虚拟机学习-慢慢琢磨JVM(2-1)ClassLoader的工作机制 java虚拟机学习-JVM内存管理:深 ...

  3. java基础学习总结——java环境变量配置(转)

    只为成功找方法,不为失败找借口! 永不放弃,一切皆有可能!!! java基础学习总结——java环境变量配置 前言 学习java的第一步就要搭建java的学习环境,首先是要安装 JDK,JDK安装好之 ...

  4. Java编程——学习大纲

    Java基础 Java基础--JDK的安装和配置 Java基础--Eclipse使用 Java基础--基本概念.数据类型.运算符 Java扩展--整型和浮点型在计算机中的存储格式 Java基础--流程 ...

  5. JAVA基础学习之 Map集合、集合框架工具类Collections,Arrays、可变参数、List和Set集合框架什么时候使用等(4)

    package com.itcast.test20140113; import java.util.ArrayList; import java.util.Arrays; import java.ut ...

  6. Java编程学习技巧和方法总结

    干货:必须要有反馈,不断调整,多读书,多些笔记. 解释:不练习你以为你能掌握?笑话,只有自己根据一个个小目标不断的敲,运行,给予你反馈,这样才会真的进步. 纸上谈Java,是永远停止在口.   关于笔 ...

  7. Java基础学习笔记十七 集合框架(三)之Map

    Map接口 通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图. Collection中的集合,元素是孤立存在的(理解为单身),向集合中存 ...

  8. 多线程编程学习六(Java 中的阻塞队列).

    介绍 阻塞队列(BlockingQueue)是指当队列满时,队列会阻塞插入元素的线程,直到队列不满:当队列空时,队列会阻塞获得元素的线程,直到队列变非空.阻塞队列就是生产者用来存放元素.消费者用来获取 ...

  9. Java基础学习(一)---Java初识

    一.Java介绍 关于Java的诞生和发展网上比较多,在此就不再赘述了,可以参考http://i.cnblogs.com/EditArticles.aspx?postid=4050233. 1.1 J ...

随机推荐

  1. 从N个元素中抽取K个不重复元素(抽奖问题)

    核心就是 把N数组抽中的元素给K数组 把N数组最后一位给N数组被抽走的那一位(这时候N数组最后一位元素和被抽走的那位元素值相等) 把N数组长度减一,去除最后一位

  2. bash的默认组合键

    组合键 组合按键 执行结果 Ctrl+C 终止目前的命令 Ctrl+D 输入结束(EOF),例如邮件结束的时候 Ctrl+M 就是Enter啦! Ctrl+S 暂停屏幕输出 Ctrl+Q 恢复屏幕输出 ...

  3. vnpy源码阅读学习(1):准备工作

    vnpy源码阅读学习 目标 通过阅读vnpy,学习量化交易系统的一些设计思路和理念. 通过阅读vnpy学习python项目开发的一些技巧和范式 通过vnpy的设计,可以用python复现一个小型简单的 ...

  4. 源码分析Kafka 消息拉取流程

    目录 1.KafkaConsumer poll 详解 2.Fetcher 类详解 本节重点讨论 Kafka 的消息拉起流程. @(本节目录) 1.KafkaConsumer poll 详解 消息拉起主 ...

  5. MySQL UTF-8 常用字符排序规则

    排序规则 解释 utf8_general_ci 不区分大小写 utf8_general_cs 区分大小写 utf8_bin 区分大小写,字符串每个字符串用二进制数据编译存储,且支持存储二进制数据

  6. 关于爬虫的日常复习(6)—— pyquery库

  7. iOS的项目目录结构

    一.一般面试官都会问这样的一个问题,你怎样划分你项目的目录结构,就能测试出这个人是否有经验? 目前,比较常规的两种结构: 1.主目录按照业务分类,内目录按照模块分类(主目录按照MVC架构分类,内部根据 ...

  8. mysql 添加/删除列(column)

    1.添加 格式:alter table 表名 add column 列名 列的数据类型;示例alter table test4 add column addr text; 2.删除 格式: alter ...

  9. Java入门 - 语言基础 - 02.开发环境配置

    原文地址:http://www.work100.net/training/java-environment-setup.html 更多教程:光束云 - 免费课程 开发环境配置 序号 文内章节 视频 1 ...

  10. Sigmoid非线性激活函数,FM调频,胆机,HDR的意义

    前几天家里买了个二手车子,较老,发现只有FM收音机,但音响效果不错,车子带蓝牙转FM,可以手机蓝牙播放音乐,但经过几次转换以及对FM的质疑,所以怀疑音质是否会剧烈下降,抱着试试的态度放了一个手机上的音 ...