Java SE包含了由一组类和接口组成的Java集合框架,用来将储存的数据以某种结构组织,并以特定的方式来访问这些数据,其目的就是提供一个处理对象集合的通用框架。

Java集合框架将对象储存的方式分为三种类型,分别是:

Set(集):对象容器中的对象没有顺序,且不能重复。

List(列表):对象容器中的对象按照索引顺序排序,可以有重复的对象。

Map(映射):对象容器中的元素包含一对“键对象-值对象”映射,其中键对象不能重复,值对象可以重复。

为支持对象的排序和遍历,提供以下几个接口:

接口SortedSet为Set类型容器提供排序功能。

接口SortedMap是为Map类型容器提供键对象的排序。

接口Iterator提供了对集合对象进行遍历访问的遍历器。

接口Comparable和Comparator用来实现集合中对象的排序。

集合Collection接口位于Set接口和List接口的最顶层,是Set接口和List接口的父接口。Collection接口定义了基本操作(增删...)、批量操作、数组操作的基本方法。

在Collection接口中有一个iterator()方法可以返回一个Iterator对象,来遍历集合中的所有元素。

Iterator接口的方法:

1.hasNext():如果集合中还有更多的元素,该方法返回true。

2.next():返回集合中的下一个元素。

3.remove():删除iterator返回的最后一个元素。

每个集合都提供专用的机制访问各自的数据,但它们都支持iterator方法,故我们可以通过统一的机制来应用于所有结合类的遍历。

此外,JDK1.5后又提供了foreach循环语句,可以用更简单的方法遍历集合和数组。

在实际开发中我们常常是用Collection接口的子接口:List和Set

List接口

1.List中的元素是有顺序的。

2.List通常允许元素重复。

3.支持null元素

4.可以通过索引访问List对象中的元素

1) ArrayList(在底层使用数组作为容器,不同的是可以增删查改)

常用方法:add()、addAll、get()、set()、remove()

Vector与Arraylist类似,区别是Vector线程安全,速度较慢。

泛型:

允许在定义类、接口的时候指定类型形式参数,强迫程序在编译期检查从集合中取得的数据的类型。

equals()方法:

定位一个对象是通过equals方法比较来进行定位的。

2)LinkedList

LinkedList是实现了双向链表功能的列表,列表中每个元素均放在独立的空间中,并且每一个空间都保存有上一个和下一个链表的索引。

在需要对元素中间部分进行大量的增删查改时,可以选择使用LinkedList。

Set接口

继承了Collection接口的全部方法,并且有如下特征:

1.元素不能重复(必须重写equals()方法&hashcode()方法)

2.元素可能有顺序,也可能没有。

3.不能用索引来直接访问Set中的元素。

Set最常用的类是HashSet和TreeSet

1.HashSet

基于哈希算法的Set接口实现,有以下特点:

1.遍历HashSet时,元素无顺序。

2.不允许出现重复的元素。(具有相同的哈希码且用equals()方法比较返回true的两个对象)

3.允许包含null元素

2.TreeSet

在实现Set接口的同时实现了SortedSet接口,保证对象按照一定的顺序排序。这种顺序不是按照对象添加的顺序而是按照一定的算法来排序。

也可以根据提供的Comparator进行排序。

在JDK类库中有一部分类实现了Comparable接口,例如Integer、Double、String等到,该接口有一个compareTo(object o)方法,返回整型数据,返回为正数为大向后排序。

TreeSet根据集合元素的大小按照升序排列,而自定义排序是按照特定的比较器排序(使用comparator接口,同时改写compare(object 01,object o2)方法)。

Map 接口

Map接口是Java集合框架中不同于Collection接口的另一个重要的接口,它对应的是一种从键(Key)到值(Value)对应关系的集合。Map类型有两组对象,key和value,key不能重复,value可以重复。

Map接口中定义了Map对象所共有的方法:基本操作、批量操作、Collection视角的操作(提供了将Map转化为Collection的手段)

Map的基本方法:get(object key)返回与指定键相关的值 、put(object key,object value)向该映射添加键值对、remove(object key)删除指定的键值对

containsKey(object key)如果该映射包含指定键返回true、containsValue(object value)如果该映射包含指定值返回true、keySet()、values()

Map特点:我们可以设置有意思的键(如将用户名设置为key键);Map不能同时遍历键和值,只能遍历其中之一。

HashMap

基于哈希算法的Map接口实现。必须重写hashcode()和equals方法。

hashMap使用哈希码通过键对其内容进行快速的查找。

TreeMap

TreeMap类是基于红黑树算法的Map接口实现,其键的存放方式和TreeSet相似,存放在树中,键的顺序按照自然顺序或者自定义顺序两种方式排列。因为其考虑到了排序问题,故速度比HashMap慢。

工具类Collections和Arrays

工具类Collections和Arrays提供了大量方法,对元素进行排序、查询、修改等操作,且都是静态方法。

Collections.Sort(object o)自然顺序排序、Collections.reverse(object o)反转排序、Collections.shuffle(object o)混排

此外Collections还提供了多个静态方法用于创建线程安全的同步集合:

1.synchronizedCollection(Collection c)返回一个线程安全的collection。

2.synchronizedList(List list)返回一个线程安全的list

3.synchronizedSet(Set s)返回一个线程安全的set

4.synchronizedMap(Map m)返回一个线程安全的map

Arrays类

用来操作数组的排序和搜索等。

Hashtable的子类Properties

用于处理属性文件夹,将Map形式的键值对数据存在一个扩展名为“.properties”的文本文件中,作为软件的配置文件。

Properties类的主要方法:

1.getProperty(String key)根据属性键key获取对应的值。

2.setProperty(String key,String value)设置属性

3.load(InputStream in):从输入流中装载全部属性

4.store(OutputStream out,String comments)将属性内容通过输出流输出

java集合框架 改写_Java集合框架1相关推荐

  1. java集合框架类_Java集合框架总结—超详细-适合面试

    Set和List接口是Collection接口派生的两个子接口,Queue是Java提供的队列实现,类似于List. Map实现类用于保存具有映射关系的数据(key-value). 2.Set.Lis ...

  2. java集合框架介绍_Java集合框架全面介绍(一)

    Java平台提供了一个全新的集合框架."集合框架"主要由一组用来操作对象的接口组成.不同接口描述一组不同数据类型. Java 2集合框架图 集合接口:6个接口(短虚线表示),表示不 ...

  3. lamda获取参数集合去空_JAVA集合框架知识

    1. Vector用法和ArrayList区别 (1) Vector的特有方法有哪些? void addElement(E obj) 将指定的组件添加到此向量的末尾,将其大小增加1. (2) Vect ...

  4. java hashset 源码_Java集合源码分析-HashSet和LinkedHashSet

    前两篇文章分别分析了Java的ArrayList和LinkedList实现原理,这篇文章分析下HashSet和LinkedHashSet的源码.重点讲解HashSet,因为LinkedHashSet是 ...

  5. java list取值_Java集合详解

    一.集合的由来 通常,我们的程序需要根据程序运行时才知道创建多少个对象.但若非程序运行,程序开发阶段,我们根本不知道到底需要多少个数量的对象,甚至不知道它的准确类型.为了满足这些常规的编程需要,我们要 ...

  6. java集合的遍历_Java集合之遍历

    在Java开发中,集合,可以说使我们必然要使用到的一个框架.对集合的遍历也是我么经常要进行的操作,而遍历操作又有多种,下面就对集合遍历进行以下总结. 一.List.Set的遍历 List与Set都继承 ...

  7. java list详解_java集合List解析

    作为一个Developer,Java集合类是我们在工作中运用最多的.最频繁的类.相比于数组(Array)来说,集合类的长度可变,更加适合于现代开发需求: Java集合就像一个容器,可以存储任何类型的数 ...

  8. java的集合和数组_Java集合和数组的区别

    Java集合和数组的区别 集合和容器都是Java中的容器. 区别 数组特点:大小固定,只能存储相同数据类型的数据 集合特点:大小可动态扩展,可以存储各种类型的数据 转换 数组转换为集合: Arrays ...

  9. java爬虫框架动态_java爬虫框架webmagic

    最近需要爬去网站的一些商品,就开始在网上找方法,本来是想着用Python做的,因为以前用Python写过一个小脚本,爬取一个文献网站上的免费文献. 步骤大概是这样的:1,先获取给定URL的html文件 ...

  10. java集合set初始化_Java集合--Set(基础)

    1.Set 上一篇,我们介绍Java中的List集合.本篇,让我们继续学习,来了解下Set集合: Set继承于Collection接口,是一个不允许出现重复元素,并且无序的集合,主要有HashSet和 ...

最新文章

  1. 20175320 2018-2019-2 《Java程序设计》第2周学习总结
  2. flash影响中文输入
  3. LeetCode 1548. The Most Similar Path in a Graph(动态规划)
  4. lumen 项目根目录_利用rewrite修改网站根目录,适用于laravel、lumen
  5. 超长正整数加法 c语言,两个超长正整数的加法
  6. Visual Studio Code是什么
  7. Ubuntu中开启MySQL远程访问功能,并将另一个数据库服务器中的数据迁移到新的服务器中...
  8. python的解释器spython介绍
  9. java jsonproperty_将多个JSON字段映射到单个Java字段
  10. python处理xps文件_如何在Windows 10系统中处理XPS文件
  11. python写入文件出现空行
  12. 解决在Word安装Mendeley失败,提示“错误429:activex部件不能创建对象“问题
  13. 关于idea链接oracle数据库出现[08006][17002] IO 错误: Got minus one from a read call, connect lapse 1 ms., Authen
  14. 【日语】英语26个字母的日语读法
  15. Vue.js快速原型开发问题汇总
  16. pica8公司和picOS
  17. 什么时候重写equals方法
  18. 计算机技术与移动支付的关系,移动支付的破与立
  19. SAP那些事-职业篇-35-PA考试通过啦
  20. android fm信号强度,FM 收音机灵敏度测试方法

热门文章

  1. 活灵活现用 Git --技巧篇
  2. 5.VMware View 5.0安装与部署-安装view agent与模版
  3. 你理解这些Cisco NAT分类和原理吗
  4. 概念理解之装箱与拆箱
  5. UNIX环境高级编程之第1章:UNIX基础知识
  6. xxx.app 已损坏无法打开,来自身份不明的开发者解决方法
  7. Shell:运算命令和操作符
  8. 【备战春招/秋招系列】美团Java面经总结进阶篇 (附详解答案) 1
  9. 《HTML5游戏编程核心技术与实战》——2.3 图像API
  10. Name Mangling and extern “C” in C++