集合框架(JCF)java collections framework

框架:为了实现某一目的/功能而预先提供的一系列封装好的具有继承或实现关系的类与接口。

1、这种框架是高性能的,对基本类集(动态数组、链接表、树、散列表)的实现是高效率的。

2、框架必须允许不同的类集以相同的方式和高度互相操作方式工作。

3、类集必须是容易扩展和修改的。

为了实现这些目标,类集框架被设计成包含了一组标准接口的类与接口:

Collection 是存放一组单值的最大接口。

List——列表

是Collection的子接口,里面的内容允许重复。

List的特点:线性。即:有序。元素放入的顺序和元素的存储顺序保持一致。

表象上:List最大的特点就是有下标。

ArrayList: 就是作为一个数组的封装出现的,底层就是数组。

LinkedList:底层封装的是一个双向链表。

1、查找、修改用的多的时候用ArrayList。

2、增加、删除用的多的时候(特别是往中间增加、删除)用LinkedList。

3、线程安全,数据量大的时候考虑用vector。

泛型<>:用来控制集合只能操作某一种数据类型。

遍历:1、普通for循环遍历。

2、使用迭代器Iterator完成遍历。——没有下标从头到尾走一遍,不能操作数组。

3、for-each循环语句,底层封装的就是迭代器,语法简单,还可以操作数组。推荐使用。

Set——集

是collection的子接口,里面的内容不允许重复。

特点:不能放置重复元素,无序存放元素。

表象上:Set没有下标。

HashSet判断两元素不重复:1、调用equals方法比较两对象

2、两元素的hashcode值保持一致

只有这两个条件同时满足,java才认为是同一对象。

所有重写了equals方法一般要重写hashcode方法,让equals返回true的时候,hashcode返回的值应该一样。

hashSet只有增、删、求长度和遍历等操作。

遍历:1、迭代器

2、for-each

Map——映射

是存放一对值的最大接口,所有的元素都以键和值的方式存储。

特点:键值对——键要求唯一,值可以重复

常用子类:hashMap、properties(专用于操作属性文件)

hashMap

常用操作:增、删、改、查、容、遍历

遍历的时候:不能同时遍历所有的键和值,只能单独遍历键与值。

键在遍历的时候用Set类型来接。

值在遍历的时候用Collection来接。

hashMap与hashTable比较:1、hashMap非线性安全,hashTable是线性安全的。

2、hashMap允许null来做键/值,hashTable不允许。

properties

常用操作:增、删、查、改、容、存、取。

存的时候,调用的是.store方法存文件,

取的时候,调用.load方法取文件。

文件类型:.properties——固定格式的文本文件,将是工作中使用率第二的配置文件。

Iterator

集合的输出接口,从前到后输出指定集合中的内容。

ListIterator

是Iterator的子接口,可以进行双向输出。

Enumeration

是最早的输出接口,用于输出指定集合中的内容。

collections

集合操作的算法类

包括排序、求最大、最小、反转、随机混排等操作

排序的时候,因为是对对象排序,所以应按一定的业务逻辑的自然顺序排序。

比较器:

comparable接口:内部比较器

可对任意数组排序,java泛型技术,二叉树排序原理

1、类实现comparable接口

2、重写compareTo方法

compareTo方法返回的是int类型数据:1表示大于,-1表示小于,0表示相等。

comparator接口:外部比较器

补救的做法

此接口一样需要重写方法,但方法接收两个对象,返回值依然是1、-1、0;

SortedSet

单值的排序接口,实现此接口的集合类,里面的内容可以使用比较器排序。

SortedMap

存放一对值的排序接口,里面内容按照key排序,使用比较器排序。

Queue

队列接口,此接口的子类可以实现队列操作。

Map.Entry

Map.Entry的内部接口,每个

Map.Entry对象都保存着一对key——value的内容,每个map接口中都保存有多个Map.Entry接口实例。

总的来说:

1、如果要求线程安全,使用Vector、Hashtable。

2、如果不要求线程安全,使用ArrayList(查找、修改较多的时候使用)、LinkedList(删除、增加较多的时候使用)、HashMap(要求键值对映的时候使用)。

3、如果要求键值对应,使用HashMap、HashTable。

4、如果数据量大、又要求线程安全考虑使用Vector。

day18 集合框架(JCF)的更多相关文章

  1. day18<集合框架+>

    集合框架(Map集合概述和特点) 集合框架(Map集合的功能概述) 集合框架(Map集合的遍历之键找值) 集合框架(Map集合的遍历之键值对对象找键和值) 集合框架(Map集合的遍历之键值对对象找键和 ...

  2. 阶段01Java基础day18集合框架04

    18.01_集合框架(Map集合概述和特点) A:Map接口概述 查看API可以知道: 将键映射到值的对象 一个映射不能包含重复的键 每个键最多只能映射到一个值 B:Map接口和Collection接 ...

  3. Java集合框架(JCF)之collention

    一.概念:是为了实现某一目的或功能而预先提供的一系列封装好了的具有继承或实现的类与接口. 二.特点: 1.元素的类型可以不同  2.集合长度可变 3.空间不固定 三.collection与collec ...

  4. [Day18]集合框架Collection、迭代器、增强for循环以及泛型

    1.集合 1.1集合-本身是一个存储的容器 集合类的基本接口是Collection接口,这个接口有两个基本方法 (1)boolean add(E element) 用于向集合中添加元素,如果添加元素确 ...

  5. Java 集合系列之一:JCF集合框架概述

    容器,就是可以容纳其他Java对象的对象.Java Collections Framework(JCF)为Java开发者提供了通用的容器 java集合主要划分为四个部分: Collection(Lis ...

  6. Java集合框架(常用类) JCF

    Java集合框架(常用类) JCF 为了实现某一目的或功能而预先设计好一系列封装好的具有继承关系或实现关系类的接口: 集合的由来: 特点:元素类型可以不同,集合长度可变,空间不固定: 管理集合类和接口 ...

  7. Java集合框架介绍。Java Collection Frameworks = JCF

    Java集合框架 = Java Collection Frameworks  = JCF . 为了方便理解,我画了一张思维脑图.

  8. Java 之 集合框架(JCF)

    1.集合框架 a.框架:为了实现某一目的或功能,而预先提供的一系列封装好的.具有继承或实现关系的类与集合 b.集合:①定义:Java中对一些数据结构和算法进行封装,即封装(集合也是一种对象) ②特点: ...

  9. 集合框架(JCF/Java Collection Framework)

    集合的特点:1.数据的类型可以不同2.集合长度可变3.空间不固定集合也是对象,用于检索,存储以及传输对象集合框架的组成Collection接口和Map接口 Collection是Set接口和List接 ...

随机推荐

  1. Win32 API翻译

    这是从MSDN里面的Win32 SDK API函数.结构.通知.消息等等超过3000个.其中一半是整理自别人翻译. http://files.cnblogs.com/files/sishenzaixi ...

  2. Java之IO流进阶篇:内存流,打印流,对象流

    Java中的IO流,即为输入输出流.所谓输入输出流,都是相对于程序而言,程序就是这个参照物.一张图看懂输入输出流: 输入流抽象基类:InputStream,Reader 输出流抽象基类:OutputS ...

  3. 【PAT】B1016 部分A+B

    水题 以字符和字符串形式储存输入,比较,计算出两个个数的D的个数,用for循环拼成P,相加得出结果 #include<stdio.h> int main(){ char A[20],DA, ...

  4. 浪潮服务器I4008/NX5480M4介绍

    浪潮I4008 / NX5480M4是一款高密度模块化服务器. I4008是机箱,NX5480M4是节点. 8个计算节点模块可以部署在标准机架4U高度机器里,具有高性能.低功耗.易维护.组管理功能.适 ...

  5. SQLServer之修改CHECK约束

    使用SSMS数据库管理工具修改CHECK约束 1.打开数据库,选择数据表->右键点击->选择设计(或者展开约束,选择约束,右键点击,选择修改,后面步骤相同). 2.选择要修改的数据列-&g ...

  6. LeetCode算法题-Distribute Candies(Java实现)

    这是悦乐书的第266次更新,第279篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第133题(顺位题号是575).给定具有偶数长度的整数数组,其中该数组中的不同数字表示不 ...

  7. Visual Studio 2017的安装与使用

    Visual Studio 2017的安装与使用 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 1. 下载Visual Studio 2017 在官网 ...

  8. python 结巴分词学习

    结巴分词(自然语言处理之中文分词器) jieba分词算法使用了基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能生成词情况所构成的有向无环图(DAG), 再采用了动态规划查找最大概率路径,找出基于 ...

  9. Python开发【socket篇】解决粘包

    客户端 import os import json import struct import socket sk = socket.socket() sk.connect(('127.0.0.1',8 ...

  10. springMVC实现登陆

    页面打开跳转到登陆页面 登陆成功跳转到成功页面 登陆失败再次返回登录页面,并增加提示信息 1.首页跳转到登陆页面 Tomcat服务器启动时默认加载WEB-INF下的index.jsp,可以通过修改xm ...