JAVA集合框架(精校版本)

合集下载

Java学习资料集(8):Java 集合框架

Java学习资料集(8):Java 集合框架

Java集合类的整体框架如下:从上图中可以看出,集合类主要分为两⼤大类:Collection和Map。

Collection是List、Set等集合⾼高度抽象出来的接⼝口,它包含了了这些集合的基本操作,它主要⼜又分Set接⼝口通常表示⼀一个集合,其中的元素不不允许重复(通过hashcode和equals函数保证),常⽤用实现类有HashSet和TreeSet,HashSet是通过Map中的HashMap实现的,⽽而TreeSet是通过Map 中的TreeMap实现的。

另外,TreeSet还实现了了SortedSet接⼝口,因此是有序的集合(集合中的元素要实现Comparable接⼝口,并覆写Compartor函数才⾏行行)。

我们看到,抽象类AbstractCollection、AbstractList和AbstractSet分别实现了了Collection、List和Set接⼝口,这就是在Java集合框架中⽤用的很多的适配器器设计模式,⽤用这些抽象类去实现接⼝口,在抽象类中实现接⼝口中的若⼲干或全部⽅方法,这样下⾯面的⼀一些类只需直接继承该抽象类,并实现⾃自⼰己需要的⽅方法即可,⽽而不不⽤用实现接⼝口中的全部抽象⽅方法。

Map是⼀一个映射接⼝口,其中的每个元素都是⼀一个key-value键值对,同样抽象类AbstractMap通过适配器器模式实现了了Map接⼝口中的⼤大部分函数,TreeMap、HashMap、WeakHashMap等实现类都通过继承AbstractMap来实现,另外,不不常⽤用的HashTable直接实现了了Map接⼝口,它和Vector都是JDK1.0就引⼊入的集合类。

Iterator是遍历集合的迭代器器(不不能遍历Map,只⽤用来遍历Collection),Collection的实现类都实现了了iterator()函数,它返回⼀一个Iterator对象,⽤用来遍历集合,ListIterator则专⻔门⽤用来遍历List。

第一部分Java集合框架

第一部分Java集合框架

举例:
IteratorExample.java
boolean hasNext() 判断是否存在另一个可访问的 元素。 Object next() 返回要访问的下一个元素。如 果到达集合结尾,则引发 NoSuchElementException异 NoSuchElementException异 常。当使用next方法遍历元素 常。当使用next方法遍历元素 时,如果需要,可以接着使用 remove方法删除刚返回的元素。 remove方法删除刚返回的元素。 next和hasNext方法是一种健 next和hasNext方法是一种健 全的设计,能够以任何顺序调 用它。它们是相对独立的,可 以多次调用hasNext方法而不 以多次调用hasNext方法而不 一定非要移到下一个元素时再 调用,并且会返回正确的答案。 void remove() 删除上次访问返回的对象。本 方法必须紧跟在一个元素的访 问后执行。如果上次访问后集 合已被修改,方法将引发 IllegalStateException异常。 IllegalStateException异常。
Collection转换为Object数组 Collection转换为Object数组
Object[] toArray() 返回一个内含集合所有元素的Object类型 返回一个内含集合所有元素的Object类型 数组。 <T> T[] toArray(T[] a) 返回一个内含集合所有元素的T 返回一个内含集合所有元素的T类型数组。 运行期返回的数组和参数a 运行期返回的数组和参数a的类型相同,但 使用时需要进行转换。
迭代器Iterator 迭代器Iterator
Iterator接口方法能以迭代方式 Iterator接口方法能以迭代方式 逐个访问集合中各个元素,并安 全的从Collection中除去适当的 全的从Collection中除去适当的 元素。 package java.util; public interface Iterator { boolean hasNext(); Object next(); void remove(); }

Java集合框架

Java集合框架

Java集合框架汇总1.集合框架结构图 (1)2.两种特殊的Java容器类List和Set分析 (2)3. Collection 接口: (2)4.Iterator 接口: (3)5.List接口: (3)5.1 LinkedList类: (5)5.2 ArrayList类: (5)6.Set接口: (5)7.Map接口: (6)8.Comparable接口和Comparator接口: (7)9. 集合框架面试题 (7)1.集合框架结构图集合接口说明:Collection 接口是一组允许重复的对象。

List 接口继承 Collection,允许重复,以元素安插的次序来放置元素,不会重新排列。

Set 接口继承 Collection,但不允许重复,使用自己内部的一个排列机制。

Map接口是一组成对的键-值对象,即所持有的是key-value pairs。

Map中不能有重复的key。

拥有自己的内部排列机制。

容器中的元素类型都为Object。

从容器取得元素时,必须把它转换成原来的类型。

2.两种特殊的Java容器类List和Set分析容器类可以大大提高编程效率和编程能力,在Java2中,所有的容器都由SUN公司的Joshua Bloch进行了重新设计,丰富了容器类库的功能。

Java2容器类类库的用途是“保存对象”,它分为两类:------Collection||---------------List(可以重复)|----------------Set(不能重复)------Map(键值对)Collection---- 一组独立的元素,通常这些元素都服从某种规则。

List必须保持元素特定的顺序,而Set不能有重复元素。

Map---- 一组成对的“键值对”对象,即其元素是成对的对象,最典型的应用就是数据字典,并且还有其它广泛的应用。

另外,Map可以返回其所有键组成的Set和其所有值组成的Collection,或其键值对组成的Set,并且还可以像数组一样扩展多维Map,只要让Map中键值对的每个“值”是一个Map即可。

集合框架

集合框架
1 接口
Collection Map
List
Set
ArrayList
LinkedList
HashSet
TreeSet
HashMap
TreeMap
2
具体类
提供了对集合进行排序、 遍历等多种算法实现 Collections
3 算法
Java集合框架为我们提供了一套性能优良、使用方便的接口和类,它们 位于java.util包中 我们不必再重新发明轮子,只需学会如何使用它们,就可处理实际应用中 问题
18
}
}
Map接口3-3
• Map接口常用方法
方法名
Object put(Object key, Object val)


以“键-值对”的方式进行存储
Object get (Object key)
Object remove (Object key) int size()
根据键返回相关联的值,如果不存在 指定的键,返回null
Object get(int index)
boolean contains(Object o) boolean remove(Object o) Object remove(int index)
从列表中删除指定位置元素,起始索引位置从0 开始
11
练习——添加多个企鹅信息到List中

需求说明: – 把多个企鹅的信息添加到集合中 – 查看企鹅的数量 – 遍历所有企鹅的信息 – 删除集合中部分企鹅的元素 – 判断集合中是否包含指定企鹅
21
迭代器Iterator2-2
public class Test5 { public static void main(String[] args) { // 1、创建多个狗狗对象 Dog ououDog = new Dog("欧欧", "雪娜瑞"); … // 2、创建ArrayList集合对象并把多个狗狗对象放入其中 List dogs = new ArrayList (); dogs.add(ououDog); 通过迭代器依次输出所 … 有狗狗的信息 System.out.println("使用Iterator遍历,所有狗狗昵称和品种是:"); Iterator it = dogs.iterator(); while (it.hasNext()) { Dog dog = (Dog) it.next(); System.out.println(dog.getName()+"\t"+dog.getStrain()); } } }

Java集合框架

Java集合框架

JAVA集合框架概要
5
有条件的线程安全性
在Java1中容器类库是同步化的,而Java2中的容器类库都是非同步化,它通过 提供一个不同步的基类和一个同步的包装器(如对于Map有 Collections.synchronizedMap),解决了线程安全性问题。 通过将基本的
6
功能从线程安全性中分离开来,允许需要同步的用户可以拥有同步,而不需
成绩表
List { Map{ 学号:54 , 姓名:韦XX , 语文:121 , 数学:95 , … 总分 : 806 , 排名 : 1 }, Map{ 学号:60 , 姓名:黄XX , 语文:124 , 数学:119 , … 总分 : 724 , 排名 : 2 }, …
17
}
微博(个人资料,关注,粉丝)
18
Map{ 李开复 : Map{ 昵称 : 李开复 , 所在地 : 北京东城区 , 性别 : 男 , 生日 : 1961年12月3日 , 博客 : ttp:///kaifulee , 个性域名 : /kaifulee , 简介 : 创新工场CEO , 注册时间 : 2009-08-28 关注 : List{ 姓名A , 姓名B , … }, 粉丝 : List{ 粉丝A , 粉丝B , …} } }
调整
个人 相差
执行 获悉 1日
2016年
7月 24日
Set {最低 , 时间 , 政策 , 单位 , 调整 , 执行 , 2016年 , 最高 , 上下限 , 济南 , 公积金 , 个人 , 获悉 , 7月 , 年度 , 记者 , 缴存额 , 住房 , 相差 , 1日 , 24日}
一篇文档中所有句子先后排列
济南公积金单位和个人月缴存额最高为5074.32元 , 最低为155元 , 上下限相差近33倍 , 此次 政策的执行时间为2016年7月1日至2017年6月30日}

Java基础系列集合框架精品PPT课件

Java基础系列集合框架精品PPT课件
Java基础系列
--集合框架
一、概述
集合是一个将多个元素组合进单一单元或容器的对象,用于存储、获取和操作数据以 及将数据从一个方法传递到另一个方法。
一个集合是 代表那些组成一个自然的组的数据项 允许你将一个组看成是抽象的 用于存储、获取和操作数据,以及将一个数据从一个方法传递到另一个方法

高性能--基础集合的实现是高效率的,很少需要采用手动的方 式对这些“数据 引擎”进行编码。
减少编程工作量 – 精力集中于程序的重要部分
集合类型之间的通用API,使不同类型的集合以相似的方式进行操作,并有很高的互
用性。
容易扩展和改变一个集合。
提供了将标准数据集成到集合框架中的机制。
3、集合和映射
Collection转换为Object数组 : Object[] toArray() :返回一个内含集合所有元素的array Object[] toArray(Object[] a) :返回一个内含集合所有元素的array。运行 期返回的array和参数a的型别相同,需要转换为正确型别。 此外,还可以把集合转换成其它任何其它的对象数组。但是,不能直 接把集合转换成基本数据类型的数组,因为集合必须持有对象。
2、集合接口--List接口
重要方法:
面向位置的操作,包括插入某个元素或 Collection 的功能,还包括获取、除去或更 改元素的功能。在 List 中搜索元素可以从列表的头部或尾部开始,如果找到元素 ,还将报告元素所在的位置 : void add(int index, Object element): 在指定位置index上添加元素element boolean addAll(int index, Collection c): 将集合c的所有元素添加到指定位置index Object get(int index): 返回List中指定位置的元素 int indexOf(Object o): 返回第一个出现元素o的位置,否则返回-1 int lastIndexOf(Object o) :返回最后一个出现元素o的位置,否则返回-1 Object remove(int index) :删除指定位置上的元素 Object set(int index, Object element) :用元素element取代位置index上的元素,并 且返回旧的元素

JAVA 集合框架

JAVA  集合框架

集合框架1. JAVA 集合框架的组成三部分: 接口,接口的实现类,算法类(工具类)接口如:Collection,List,Map实现类:ArrayList,LinkedList,HashMap等算法类:Collections,Arrays如上图所示接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。

抽象类:5个抽象类(长虚线表示),对集合接口的部分实现。

可扩展为自定义集合类。

实现类:8个实现类(实线表示),对接口的具体实现。

左下角即为算法类.在JAVA 集合中又主要分为这三种类型Set和List集合接口(两者同属 Collection 接口下的 )和Map接口Set(集) 接口类型:集合中的对象没有特定的方式排序,没有重复对象,但它的某些实现类能对集合中的对象按特定方式排序。

List(列表) 接口类型:是有序的Collection,集合中的对象按照索引位置排序,可以有重复对象,可以按对象在集合中的索引位置检索对象,与数组类似。

Map(映射) 接口类型:集合中的每一个元素包含一对键对象和值对象,集合中没有重复的键对象,值对象可以重复。

它的有些实现类能够对集合中的键对象进行排序。

有趣的是Collection接口不提供随机访问元素的get()方法。

因为Collection 包括Set,而Set自己维护内部顺序。

如果想检查Collection中的元素,那就必须使用迭代器。

而List接口中则出现了 get(int index)方法,其实现类 ArrayList和LinkedList也就实现了这个方法。

另外 Collection 接口的iterator() 和 toArray()方法都用于获得集合中的所有元素,前者返回一个Iterator对象,后者返回一个包含集合中所有元素的数组.Iterator接口隐藏底层集合的数据结构,向客户程序提供了遍历各种类型的集合的统一接口。

hasNext()判断是否遍历完毕,next()返回下一个元素等等。

JAVA中的集合框架

JAVA中的集合框架

list.add(2,“c”);// 将对象c添加到索引位置为2的位置
Iterator<String> it = list.iterator(); while (it.hasNext()) { System.out.print(it.next()); } } 在控制台将输出如下信息: A B C D
ArrayList集合类
ArrayList集合类
•List接口常用方法
方法名
boolean add(Object o) void add(int index,Object o) int size() Object get(int index) boolean contains(Object o) boolean remove(Object o)
Object remove(int index)
LinkedList集合类
public static void main(String[] args) { List<String> list = new LinkedList<String>(); list.add(“a”); list.add(“e”); list.add(“d”); list.set(1,“b”);// 将索引位置为1的对象e修改为对象b


在列表的末尾顺序添加元素,起始索引位置 从0开始 在指定的索引位置添加元素。索引位置必须 介于0和列表中元素个数之间 返回列表中的元素个数 返回指定索引位置处的元素。取出的元素是 Object类型,使用前需要进行强制类型转换 判断列表中是否存在指定元素 从列表中删除元素 从列表中删除指定位置元素,起始索引位置 从0开始
Object getFirst() Object getLast() Object removeFirst() Object removeLast()

java的集合框架最全详解(图)

java的集合框架最全详解(图)

java的集合框架最全详解(图)纯个⼈整理,如有错误请指正。

java的集合框架最全详解(图)前⾔:数据结构对程序设计有着深远的影响,在⾯向过程的C语⾔中,数据库结构⽤struct来描述,⽽在⾯向对象的编程中,数据结构是⽤类来描述的,并且包含有对该数据结构操作的⽅法。

在Java语⾔中,Java语⾔的设计者对常⽤的数据结构和算法做了⼀些规范(接⼝)和实现(具体实现接⼝的类)。

所有抽象出来的数据结构和操作(算法)统称为Java集合框架(Java Collection Framework)。

Java程序员在具体应⽤时,不必考虑数据结构和算法实现细节,只需要⽤这些类创建出来⼀些对象,然后直接应⽤就可以了,这样就⼤⼤提⾼了编程效率。

1. 先说Set和List:1.1. Set⼦接⼝:⽆序,不允许重复。

List⼦接⼝:有序,可以有重复元素。

具体区别是Set:检索元素效率低下,删除和插⼊效率⾼,插⼊和删除不会引起元素位置改变。

<对应类有 HashSet,TreeSet>List:和数组类似,List可以动态增长,查找元素效率⾼,插⼊删除元素效率低,因为会引起其他元素位置改变。

<相应类有ArrayList,LinkedList,Vector>Set和List具体⼦类:2.2. <实例⽐较>HashSet:以哈希表的形式存放元素,插⼊删除速度很快。

ArrayList:动态数组,LinkedList:链表、队列、堆栈。

Vector是⼀种⽼的动态数组,是线程同步的,效率很低,⼀般不赞成使⽤1. Collection接⼝Collection是最基本的集合接⼝,⼀个Collection代表⼀组Object,即Collection的元素(Elements)。

⼀些 Collection允许相同的元素⽽另⼀些不⾏。

⼀些能排序⽽另⼀些不⾏。

Java SDK不提供直接继承⾃Collection的类,Java SDK提供的类都是继承⾃Collection的“⼦接⼝”如List和Set。

JAVA集合框架

JAVA集合框架

集合框架Java平台提供了一个全新的集合框架。

“集合框架”主要由一组用来操作对象的接口组成。

不同接口描述一组不同数据类型。

它们都封装在包中核心接口Java集合框架的核心接口有两种:Collection(聚集)和Map(映射)Collection 接口是一组允许重复的对象。

Set 中的数据对象没有顺序且不可以重复。

接口List中的数据对象有顺序且可以重复。

接口Map接口是一组成对的键-值对象,即所持有的是key-value pairs。

Map中不能有重复的key。

拥有自己的内部排列机制。

不能有重复的键Collection类提供了一些静态方法实现了基于List容器的一些常用算法void sort(List l) 对List容器内的元素排序void shuffle(List l) 对List容器内的对象进行随机排列void reverse(List l) 对List容器内的对象进行逆续排列void fill(List l, Object o)用一个特定的对象重写整个List容器void copy(List dest,List src)将src List容器内容拷贝到dest List容器int binarySearch(List l, Object o)对于顺序的List容器,采用折半查找的方法查找特定对象例题:List l1 = new LinkedList();List l2 = new LinkedList();for(int i=0; i<=9; i++) { ("a"+i); } 5”;public class MyStack {/*** List的实现类LinkedList* LinkedList存储时按照后进先出的原则*/private LinkedList<Object> stack=new LinkedList<Object>();/*** 把对象存入LinkedList的第一个位置*/public void push(Object o){(o);}/*** @param args* 把第一个位置的对象进行删除*/public Object pop(){return ();}/*** 取得LinkedList的第一个元素*/public Object peek(){return ();}public static void main(String[] args) {MyStack m=new MyStack();("wangwu");("zhangsan");("lisi");"现在箩筐顶部的元素是:"+());();"现在箩筐顶部的元素是:"+());}}ArrayList类import class TestArrayList {/*** List接口的第二个实现类,按照先进先出*/public static void main(String[] args) {ArrayList<String> list=new ArrayList<String>();("a");("b");("c");for (int i=0;i<();i++){String temp=(i);}}}——————————————————————————————————————————————————————————————————————————————————————————————————import Student{public String name;public int num;public String address;public Student(String name,int num,String address){=name;=num;=address;}public String getName() {return name;}public void setName(String name) {= name;}public int getNum() {return num;}public void setNum(int num) {= num;}public String getAddress() {return address;}public void setAddress(String address) {= address;}}public class Arrayzuoye {/*** 利用ArrayList来存储一个小学生类,学生类有学号,姓名,住址三个属相,实例化出一个学生“张三”。

Java集合框架Java Colletion Framework

Java集合框架Java Colletion Framework
Java 集合框架 Java Colletion Framework
和 String 一样,Java 集合类也是实际开发过程中经常用到的类。在 Java2 中,有一套设计优良的接口和类 组成了 Java 集合框架 Collection,使程序员操作成批的数据或对象元素极为方便。这些接口和类有很多对抽象 数据类型操作的 API,而这是我们常用的且在数据结构中熟知的。例如 Map,Set,List 等。并且 Java 用面向对 象的设计对这些数据结构和算法进行了封装,这就极大的减化了程序员编程时的负担。程序员也可以以这个集合 框架为基础,定义更高级别的数据抽象,比如栈、队列和线程安全的集合等,从而满足自己的需要。 Java2 的集合框架,抽其核心,主要有三种:List、Set 和 Map。如下图所示:
把 HashMap 中的 Key 作为 Set 的对应存储项。看看 HashSet 的 add(Object obj)方法的实现就可以一目了然了。 public boolean add(Object obj) { return map.put(obj, PRESENT) == null; } 这个也是为什么在 Set 中不能像在 List 中一样有重复的项的根本原因,因为 HashMap 的 key 是不能有重复的。 LinkedHashSet:HashSet 的一个子类,一个链表。 TreeSet:SortedSet 的子类,它不同于 HashSet 的根本就是 TreeSet 是有序的。它是通过 SortedMap 来实现 的。 Set 总结: 1. Set 实现的基础是 Map(HashMap) ; 2. Set 中的元素是不能重复的,如果使用 add(Object obj)方法添加已经存在的对象,则会覆盖前面的对象 Map 是一种把键对象和值对象进行关联的容器,而一个值对象又可以是一个 Map,依次类推,这样就可形成一个 多级映射。对于键对象来说,像 Set 一样,一个 Map 容器中的键对象不允许重复,这是为了保持查找结果的一致 性;如果有两个键对象一样, 那你想得到那个键对象所对应的值对象时就有问题了, 可能你得到的并不是你想的那 个值对象,结果会造成混乱,所以键的唯一性很重要,也是符合集合的性质的。当然在使用过程中,某个键所对 应的值对象可能会发生变化,这时会按照最后一次修改的值对象与键对应。对于值对象则没有唯一性的要求,你 可以将任意多个键都映射到一个值对象上,这不会发生任何问题(不过对你的使用却可能会造成不便,你不知道 你得到的到底是那一个键所对应的值对象) 。Map 有两种比较常用的实现:HashMap 和 TreeMap。 HashMap 用到了哈希码的算法,以便快速查找一个键。TreeMap 则是对键按序存放,因此它便有一些扩展的方 法,比如 firstKey(),lastKey()等,你还可以从 TreeMap 中指定一个范围以取得其子 Map。 键和值的 关联很简单, 用 put(Object key,Object value)方法即可 将一个键与一 个值对象相关联 。用 get(Object key)可得到与此 key 对象所对应的值对象。 一、几个常用类的区别 1.ArrayList: 元素单个,效率高,多用于查询 2.Vector: 元素单个,线程安全,多用于查询 3.LinkedList:元素单个,多用于插入和删除 4.HashMap: 元素成对,元素可为空 5.HashTable: 元素成对,线程安全,元素不可为空 二、Vector、ArrayList 和 LinkedList 大多数情况下,从性能上来说 ArrayList 最好,但是当集合内的元素需要频繁插入、删除时 LinkedList 会有 比较好的表现,但是它们三个性能都比不上数组,另外 Vector 是线程同步的。所以: 如果能用数组的时候(元素类型固定,数组长度固定),请尽量使用数组来代替 List; 如果没有频繁的删除插入操作,又不用考虑多线程问题,优先选择 ArrayList; 如果在多线程条件下使用,可以考虑 Vector; 如果需要频繁地删除插入,LinkedList 就有了用武之地; 如果你什么都不知道,用 ArrayList 没错。 三、Collections 和 Arrays 在 Java 集合类框架里有两个类叫做 Collections(注意,不是 Collection!)和 Arrays,这是 JCF 里面功 能强大的工具, 但初学者往往会忽视。 按 JCF 文档的说法, 这两个类提供了封装器实现 (Wrapper Implementations) 、 数据结构算法和数组相关的应用。 Collections 类提供了丰富的静态方法帮助我们轻松完成这些在数据结构课上烦人的工作: binarySearch:折半查找。 sort:排序,这里是一种类似于快速排序的方法,效率仍然是 O(n * log n),但却是一种稳定的排序方法。 reverse:将线性表进行逆序操作,这个可是从前数据结构的经典考题哦! rotate:以某个元素为轴心将线性表“旋转” 。 swap:交换一个线性表中两个元素的位置。 Collections 还有一个重要功能就是“封装器” (Wrapper) ,它提供了一些方法可以把一个集合转换成一个特

JAVA集合框架_3

JAVA集合框架_3

第5章Java集合框架学习内容Java集合API泛型能力目标熟练使用Java集合API理解并会使用泛型本章简介在进行面向对象编程时,程序开发人员经常需要存储和处理大量的对象信息,而选择合适的数据存储方式至关重要。

Java为我们提供了集合框架来解决数据存储的问题。

Java集合可以存储复杂的对象数据,并能非常方便的实现对数据的增、删、改、查、等操作。

它提供了众多的接口和类,基本满足我们日常编程的需求。

本章重点讲解Java集合框架的结构和一些常用的API,包括List、Set、Map等接口及其实现类。

最后还会介绍在Java集合中被广泛使用的泛型。

核心技能部分5.1为什么需要集合假设现在我们需要存储新闻信息,包括新闻的标题、内容和作者等。

这时大家会很自然的想到使用第一阶段学过的数组,即先创建一个实体类news,然后再创建一个news类型的数组就行了。

但实际情况是:每天的新闻数量是不固定的,时刻都会发生变化,那存储新闻的数组应该设置多大的长度呢?与此类似的问题在实际应用中会经常遇到,这时数组的缺陷就比较明显了。

另外,数组在对数据进行增、删、改、查操作上效率低下。

在实际应用中,当我们遇到需要存储大量的、复杂的并且数量不定的数据时可以考虑使用Java中的集合框架。

5.2Java集合框架Java通过集合框架为程序开发人员提供了一套功能强大、性能优良、使用方便的接口和类,它们都位于java.util包中。

Java集合框架的主要内容及关系如图5.1.1所示。

图5.1.1Java集合框架Java集合框架是一个统一的体系结构,包含三块内容:接口、实现类和算法。

接口:图5.1.1的上半部分都是接口,包括Collection、List、Set、Map等。

实现类:图5.1.1的下半部分都是实现类,常见的包括ArrayList、HashMap等。

算法:提供了查找、排序等多种算法实现。

Java集合框架中的接口虽然都提供了存储大量、复杂数据的功能,但是它们之间也存在者明显的差别。

Java集合框架

Java集合框架

3、 Collection接口
组操作 :要么是作用于元素组的任务,要么是同时作用 于整个集合的任务。


boolean containsAll(Collection collection) boolean addAll(Collection collection) void clear() void removeAll(Collection collection) void retainAll(Collection collection)
[Bernadine, Clara, Elizabeth, Gene]
3、 Collection接口
该接口支持添加和除去等基本操作。设法除去一个元素时,如果这 个元素存在,除去的仅仅是集合中此元素的一个实例。

boolean add(Object element) boolean remove(Object element)

接口:即表示集合的抽象数据类型。接口提供了让我们对集合 中所表示的内容进行单独操作的可能。 实现:也就是集合框架中接口的具体实现。实际它们就是那些 可复用的数据结构。 算法:在一个实现了某个集合框架中的接口的对象上,完成某 种有用的计算的方法,例如查找、排序等。
1、集合框架的概念
集合框架对编程有什么好处呢?
5、List接口
List接口对Collection进行了简单的扩充,可以将任何东 西放到一个List容器中,并在需要时从中取出。 次序是List最重要的特点;它确保维护元素特定的顺序。 List为Collection添加了许多方法,使得能够向List中间插 入与移除元素。 可以在List中间插入和删除元素。 它的具体实现类常用的有ArrayList和LinkedList。在具 体应用时可以根据需要自由选择。

java集合框架-简介

java集合框架-简介

Java 集合框架1.简介早在 Java 2 中之前,Java 就提供了特设类。

比如:Dictionary, Vector, Stack, 和 Properties 这些类用来存储和操作对象组。

虽然这些类都非常有用,但是它们缺少一个核心的,统一的主题。

由于这个原因,使用 Vector 类的方式和使用 Properties 类的方式有着很大不同。

集合框架被设计成要满足以下几个目标。

A.该框架必须是高性能的。

基本集合(动态数组,链表,树,哈希表)的实现也必须是高效的。

B.该框架允许不同类型的集合,以类似的方式工作,具有高度的互操作性。

C.对一个集合的扩展和适应必须是简单的。

为此,整个集合框架就围绕一组标准接口而设计。

你可以直接使用这些接口的标准实现,诸如: LinkedList, HashSet, 和 TreeSet 等,除此之外你也可以通过这些接口实现自己的集合。

Java集合框架完整图例如下:从上面的集合框架图可以看到,Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。

Collection 接口又有 3 种子类型,List、Set 和 Queue,再下面是一些抽象类,最后是具体实现类,常用的有 ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap 等等。

集合框架是一个用来代表和操纵集合的统一架构。

所有的集合框架都包含如下内容:接口:是代表集合的抽象数据类型。

例如 Collection、List、Set、Map 等。

之所以定义多个接口,是为了以不同的方式操作集合对象实现(类):是集合接口的具体实现。

从本质上讲,它们是可重复使用的数据结构,例如:ArrayList、LinkedList、HashSet、HashMap。

算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。

java集合框架详解

java集合框架详解

java集合框架详解⼀、概述Java集合类主要由两个根接⼝Collection和Map派⽣出来的,Collection派⽣出了三个⼦接⼝:List、Set、Queue(Java5新增的队列),因此Java集合⼤致也可分成List、Set、Queue、Map四种接⼝体系,(注意:Map不是Collection的⼦接⼝)。

数据与集合的区别数组长度不可变化⽽且⽆法保存具有映射关系的数据;集合类⽤于保存数量不确定的数据,以及保存具有映射关系的数据。

数组元素既可以是基本类型的值,也可以是对象;集合只能保存对象。

⼆、CollectionUML图其中List代表了有序可重复集合,可直接根据元素的索引来访问;Set代表⽆序不可重复集合,只能根据元素本⾝来访问;Queue是队列集合;Map代表的是存储key-value对的集合,可根据元素的key来访问value。

上图中淡绿⾊背景覆盖的是集合体系中常⽤的实现类,分别是ArrayList、LinkedList、ArrayQueue、HashSet、TreeSet、HashMap、TreeMap等实现类。

collection的APICollection 接⼝将对象组织到⼀起。

数组不能调整⼤⼩,并且只能组织相同类型的对象,⽽Collections允许添加任何类型的对象,并且不强迫你指定初始⼤⼩。

需要注意的重要的⼀点是, Collection 扩展了 Iterable 接⼝, Collection 从那⾥继承了 iterator ⽅法。

该⽅法返回⼀个 Iterator对象,可以⽤来遍历集合的元素。

我们还会学习如何使⽤ for 循环来遍历⼀个 Collection 的元素。

ListList集合代表⼀个有序、可重复集合,集合中每个元素都有其对应的顺序索引。

List集合默认按照元素的添加顺序设置元素的索引,可以通过索引(类似数组的下标)来访问指定位置的集合元素。

实现List接⼝的集合主要有:ArrayList、LinkedList、Vector、Stack。

JAVA集合框架

JAVA集合框架

集合框架Java平台提供了一个全新的集合框架。

“集合框架”主要由一组用来操作对象的接口组成。

不同接口描述一组不同数据类型。

它们都封装在java.util包中核心接口Java集合框架的核心接口有两种:Collection(聚集)和Map(映射)Collection 接口是一组允许重复的对象。

Set 中的数据对象没有顺序且不可以重复。

接口List中的数据对象有顺序且可以重复。

接口Map接口是一组成对的键-值对象,即所持有的是key-value pairs。

Map中不能有重复的key。

拥有自己的内部排列机制。

不能有重复的键Collection类java.util.Collections 提供了一些静态方法实现了基于List容器的一些常用算法 void sort(List l) 对List容器内的元素排序void shuffle(List l) 对List容器内的对象进行随机排列void reverse(List l) 对List容器内的对象进行逆续排列void fill(List l, Object o)用一个特定的对象重写整个List容器void copy(List dest,List src)将src List容器内容拷贝到dest List容器int binarySearch(List l, Object o)对于顺序的List容器,采用折半查找的方法查找特定对象例题:List l1 = new LinkedList();List l2 = new LinkedList();for(int i=0; i<=9; i++) { l1.add("a"+i); }System.out.println(l1);Collections.shuffle(l1); //随机排列System.out.println(l1);Collections.reverse(l1); //逆续System.out.println(l1);Collections.sort(l1); //排序System.out.println(l1);System.out.println(Collections.binarySearch(l1,“a5”)); //折半查找ListList接口是Collection的子接口,实现List接口的容器类中的元素是有顺序的,而且可以重复List 容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。

java集合框架

java集合框架

集合框架的组织结构:collectionSet hashlistList arraylistLinkedlist集合框架就是一个框可以将各种对象放在里面。

看父接口的jdk看他们的方法。

一、集合框架分为两类* 1. Collection :存放许多单个对象,两个子接口Set List* Set中不能存放重复对象* List中存放的是有索引(有序,不是大小顺序)的对象List有两个实现类ArrayList ,LinkedListArrayList是基于数组实现的,查找快,但是增删改慢LinkedList基于链表实现的,增删改快,查找相对较慢* 2 .Map 存放的是键值对Vector ArrayList区别:Vector 线程安全,ArrayList线程不安全(安全就是不允许多线程同时访问集合,不安全就是运行多线程同时访问)Hashtable Hashset区别前者线程安全,后者不安全List类型,存入顺序是什么,在内存中的顺序就是什么List类型可以存重复值的,可以使用索引进行访问。

二、第一个类Arrays这个类包括了很多操作数组的静态方法,直接用类名调用对我们的数组进行操作。

//1.将数组变为List的方法List list = Arrays.a sList(is);//2二分搜索法?:在一个有序数组中,查找指定元素int index = Arrays.binarySearch(is, 2);//3.copyof 复制数组,复制前五个int[] is2 = Arrays.copyOf(is, 5);//4.copyRangeof复制指定部分int [] is3 = Arrays.copyOfRange(is, 2, 5); //5. f ill 填充,给指定数组进行数字填充int [] is4 = new int[8];//默认都是零Arrays.fill(is4, 8);for(int i : is4){System.out.println(i);}//6. 排序的方法,将数组中的数据进行自然排序三、Collections1、这个类提供了操作List类型的许多静态方法就像Arrays提供了操作数组类型的静态方法一样ArrayList<Person> list = new ArrayList<Person>(); list.add(p0);list.add(p1);list.add(p2); Collections.reverse(list);//对指定集合进行逆序操作Collections.shuffle(list);//将集合中的顺序打乱//排序Collections.sort(list);//自定义类要排序必须要实现Comparable接口2、排序要注意,其中的对象要实习排序,其类必须继承接口Collections.sort(list);//自定义类要排序必须要实现Comparable接口覆写这个方法public int compareTo(Person o) {// TODO Auto-generated method stubif(pid > o.pid)return 1;//如果是负数就是逆序,按照人的id进行比较。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

集合框架
➢Java平台提供了一个全新的集合框架。

“集合框架”主要由一组用来操作对象的接口组成。

不同接口描述一组不同数据类型。

它们都封装在java.util包中
核心接口
➢Java集合框架的核心接口有两种:Collection(聚集)和Map(映射)
➢Collection 接口是一组允许重复的对象。

➢Set 中的数据对象没有顺序且不可以重复。

接口
➢List中的数据对象有顺序且可以重复。

接口
➢Map接口是一组成对的键-值对象,即所持有的是key-value pairs。

Map中不能有重复的key。

拥有自己的内部排列机制。

不能有重复的键
Collection
➢类java.util.Collections 提供了一些静态方法实现了基于List容器的一些常用算法➢void sort(List l) 对List容器内的元素排序
➢void shuffle(List l) 对List容器内的对象进行随机排列
➢void reverse(List l) 对List容器内的对象进行逆续排列
➢void fill(List l, Object o)
➢用一个特定的对象重写整个List容器
➢void copy(List dest,List src)
➢将src List容器内容拷贝到dest List容器
➢int binarySearch(List l, Object o)
➢对于顺序的List容器,采用折半查找的方法查找特定对象
例题:
List l1 = new LinkedList();
List l2 = new LinkedList();
for(int i=0; i<=9; i++) { l1.add("a"+i); }
System.out.println(l1);
Collections.shuffle(l1); //随机排列
System.out.println(l1);
Collections.reverse(l1); //逆续
System.out.println(l1);
Collections.sort(l1); //排序
System.out.println(l1);
System.out.println(Collections.binarySearch(l1,“a5”)); //折半查找List
➢List接口是Collection的子接口,实现List接口的容器类中的元素是有顺序的,而且可以重复
➢List 容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。

➢List 接口中所定义的方法:
➢Object get(int index);
➢Object set(int index, Object element);
➢void add(int index, Object element);
➢Object remove(int index);
➢int indexOf(Object o);
➢int lastIndexOf(Object o); ————————————————————————————————————————————————————————————————————————————————————————————————————————————
List接口的实体类——LinkList类
➢第一步,确定存储方式。

相关文档
最新文档