【JAVA基础】集合框架(collections framework)
来源:互联网 发布:手机辅助软件 编辑:程序博客网 时间:2024/05/29 07:18
集合代表了一组对象(和数组一样,但数组长度不能变,而集合能)。java中的集合框架定义了一套规范,用来表示、操作集合,使具体操作与实现细节解耦。
其实说白了,可以把集合看成一个微型数据库,操作不外乎“增删改查”四种操作,我们在学习使用一个具体的集合类时,需要把四个操作的空间复杂度弄清楚了,基本上就可以说掌握这个类了。
集合和数组的区别
1、长度限制
数组长度是固定不变的,集合的大小是可动态变化的
2、存储类型之别
一个数组存储的元素可以是基本类型,也可以是引用类型,且只能存储同一种类型的元素;一个集合存储的元素只能是引用类型,但集合可以存储不同类型的元素(但集合一般存储同一类型,可以用泛型加以控制)
Java集合框架体系
java的集合类主要由两个接口派生:Collection和Map,Collection和Map是java集合框架的父接口,这两个接口又包含了一些接口或实现类。
Collection接口
(1)是List、Set和Queue接口的父接口
(2)定义了可用于操作List、Set和Queue的方法--增删改查
1、List接口及其实现类---ArrayList
(1)List(序列),元素有序,并且可重复
(2)List可以青雀控制元素的插入位置,或删除制定位置的元素
(3)ArrayList--数组序列,是List的一个重要实现类
(4)ArrayList地城是由数组实现的
注意:泛型集合中,不能添加泛型规定的类型及其子类型意外的对象,否则会报错。泛型集合中的限定类型,不能使用基本类型,必须用基本的包装类。
2、Set接口及其实现类--HashSet
(1)Set(集),元素无序,并且不可以重复
(2)HashSet--哈希集,是Set的一个重要实现类
Collection接口定义操作集合元素的具体方法大家可以参考API文档,这里通过一个例子来说明Collection的添加元素、删除元素、返回集合中元素的个数以及清空集合元素的方法
public class TestCollection{ public static void main(String[] args) { Collection c = new ArrayList(); //添加元素 c.add("孙悟空"); //虽然集合里不能放基本类型的值,但Java支持自动装箱 c.add(6); System.out.println("c集合的元素个数为:" + c.size()); //删除指定元素 c.remove(6); System.out.println("c集合的元素个数为:" + c.size()); //判断是否包含指定字符串 System.out.println("c集合的是否包含孙悟空字符串:" + c.contains("孙悟空")); c.add("轻量级J2EE企业应用实战"); System.out.println("c集合的元素:" + c); Collection books = new HashSet(); books.add("轻量级J2EE企业应用实战"); books.add("Struts2权威指南"); System.out.println("c集合是否完全包含books集合?" + c.containsAll(books)); //用c集合减去books集合里的元素 c.removeAll(books); System.out.println("c集合的元素:" + c); //删除c集合里所有元素 c.clear(); System.out.println("c集合的元素:" + c); //books集合里只剩下c集合里也同时包含的元素 books.retainAll(c); System.out.println("books集合的元素:" + books); }}
Map接口
(1)Map提供了一种映射关系,元素是以键值对(key-value)的形式存储的,能根据key快速查找value
(2)Map中的键值对以Entry类型的对象实例形式存在
(3)key值不能重复,value值可以重复
(4)key对value是多(一)对一的关系
(5)Map接口提供了返回key值集合、value值集合、Entry值集合,的方法
(6)Map支持返回,形式如:Map<K,V>
HashMap类
(1)HashMap是Map的一个重要实现类,也是最常用的,是基于哈希表实现
(2)HashMap中的Entry对象是无序排列的
(3)Key值和value值都可以为null,但是一个HashMap只能有一个Key值为null的映射(Key值不可重复)
// 创建HashMap集合类,其操作泛型为Sring数据类型 HashMap<string, string=""> map = new HashMap<string, string="">(); map.put("01", "关羽"); map.put("02", "关羽"); map.put("03", "关羽"); /** * Map集合获取元素的两种方式,(原理:将map集合转换成set,再使用迭代器) * 1、keySet:将map中所有的键存入到set(set具备迭代器)集合,在根据get方法, * 获取每一个健对应的值 。 * 2、entrySet */ // 1、通过KeySet()方法获取map集合中所有键Set集合 Set<string> set = map.keySet(); Iterator<string> iter = set.iterator(); while (iter.hasNext()) { // 获取键key String key = iter.next(); // 通过键key获取值(value) String value = map.get(key); System.out.println("key:" + key + " " + "value:" + value); } // 2、使用for()循环获取key-value for (String key : set) { System.out.println("键:" + key + " " + "值:" + map.get(key)); } // 3、使用entrySet()方法,循环获取key-value Set<entry<string, string="">> entrySet = map.entrySet(); Iterator<entry<string, string="">> iter1 = entrySet.iterator(); // 简写: Iterator<entry<string, string="">> iter1=map.entrySet().iterator(); while (iter1.hasNext()) { Entry<string, string=""> en = iter1.next(); String key = en.getKey(); String value = en.getValue(); System.out.println("键1:" + key + " " + "值1:" + value); } // 获取Map值(value)视图 Collection coll = map.values(); Iterator iter2 = map.values().iterator(); while (iter2.hasNext()) { System.out.println("遍历获取value值:" + iter2.next()); }
Set、List和Map可以看做集合的三大类:
List集合使有序集合,集合中的元素可以重复,访问集合中的元素可以根据元素的索引来访问。
Set集合使无序集合,集合中的元素不可以重复,访问集合中的元素只能根据元素本身来访问(也是集合里的元素不允许重复的原因)。
Map集合中保存Key-value对形式的元素,访问时只能根据每项元素的key来访问其value。
- 【JAVA基础】集合框架(collections framework)
- Java集合框架(java collections framework)
- Java基础--集合框架之Collections
- Java基础-集合框架7 Collections
- Java基础之集合框架--Collections.binarySearch()
- Java基础之集合框架--Collections.reverseOrder()
- Java集合框架(JCF:Java Collections Framework)之概述
- Java Collections Framework - Java集合框架之概要
- Java集合框架(JCF:Java Collections Framework)之概述
- Java Collections Framework - Java集合框架之概要
- 【深入理解Java集合框架】Java Collections Framework概览
- Java集合框架Collections
- Java Collections Framework(JAVA集合框架)中的常用集合及其特点、适用场景、实现原理简介
- java基础---->Java Collections Framework
- java基础——集合框架(Collections、Arrays)
- java基础-API-集合框架-Map、Collections、Arrays
- Java基础之集合框架--Collections.reverse()方法
- Java集合框架->Collections类
- TCP/IP、Http的区别
- jmeter笔记171128
- Redis数据库
- Caused by: java.lang.ClassNotFoundException: org.I0Itec.zkclient.exception.ZkNoNodeException
- Comparator 与 Comparable
- 【JAVA基础】集合框架(collections framework)
- Slim 框架学习,第一天
- java运算符
- React生命周期
- 正则表达式
- Mysql按条件查询
- Java的数据类型与运算符
- java synchronized详解
- 编写函数catStr(char str1[],char str2[])用于进行两个字符串的连接,编写函数lenStr()用于统计一个字符串的长度。编写函数cmpStr()用于判断两个字符串的大小。