java集合框架:接口,实现类,算法
2015-07-28 10:12
453 查看
java集合框架:接口,实现类,算法
一、概述
接 口:表示集合的抽象数据类型,例如collection,list,set,map等。之所以定义多个接口,是为了以不同的方式操作集合对象
实现类:集合框架中的具体的实现类,例如:ArrayList,LinkedList,,HashSet,HashMap
算 法:是对实现接口的对象执行计算的方法,提供了对集合进行排序、遍历等多种算法
二、下面细分讲解(接口,实现类和算法)
接口:collection 接口存储一组不唯一,无序的对象
List 接口存储一组不唯一,有序(插入顺序)的对象
Set 接口存储一组唯一,无序的对象
Map 接口存储一组键值对象,提供key(键)到value(值)的映射
实现类:
``````collection接口不赘述,此处省略n多个字。
(1)常用的List接口实现类有ArrayList 和LinkedList 两个。且都可以容纳所有类型的对象,
包括null,允许 重复,并且都保证元素的存储循序
1、ArrayList 实现了长度可变的数组,在内存中分配连续的空间.so遍历元素和随机访问元素的效率比较高
Booleanadd(Object o) 说明:在列表末尾顺序添加元素,起始索引位置从0开始
Object get(int index) 说明:返回指定索引位置处的元素,取出的是Object类型,使用时强制类型转换
int size() 说明:返回列表中元素个数
实例:(此处的实体类复用在LinkedList实例中)
//实体类开始 public class NewTitle{ private int id; private String titleName; private String creater; public NewTitle(){ } public NewTitle(int id,String titleName,String creater){ this,.id=id; this.titleName=titleName; this.creater=creater; } Public int getId(){ Return id; } Public void setId(int id){ this.id=id; } Public String getTitleName(){ return titleName; } Public void setTitleName(String titleName){ this.titleName=titleName; } Public String getCreater(){ return creater; } Public void setCreater(){ this.creater=creater; } } //实体类结束
//主函数 Public class NewTitle{ Public static void main(String[] args){ NewTitle car =new NewTitle(1,”汽车”,”管理员”); NewTitle test =new NewTitle(1,”高考”,”管理员”); List newsTitleList=new ArrayList(); newsTitleList.add(car); newsTitleList.add(test); system.out.println(“新闻标题的数目为:”+newsTitleList.size()+”条”); for(int i=0;i<newsTitleList.size();i++){ NewTitle title=(NewsTitle)newsTilteList.get(i); system.out.println ((i+1)+”:”+title.getTitleName()); }; } }
2、LinkedList 采用链表式存储方式。插入、删除元素时效率比较高
void addFirst(Object o) 说明:在列表的首部添加元素
void addLast(Object o) 说明:在列表的末尾添加元素
Object getFirst() 说明:返回列表的第一个元素
Object getLast() 说明:返回列表中的最后一个元素
Object removeFirst() 说明:删除并返回列表中的第一个元素
Object removeLast() 说明:删除并返回列表中的最后一个元素
实例:(先加上ArrayList中的实体类,再加上下面的主函数)
Public class NewTitleDemo{ Public static void main(String[] args){ NewTitle car =new NewTitle(1,”汽车”,”管理员”); NewTitle test =new NewTitle(1,”高考”,”管理员”); LinkedList newsTitleList=new LinkedList(); newsTitleList.addFirst(car); newsTitleList,.addLast(test); NewsTitle first= (NewTitle) newsTitleList.getFirst(); NewsTitle last= (NewTitle) newsTitleList.getLast();; newsTitleList.removeLast(); for(int i=0;i<newsTitleList.size();i++){} NewTitle title=(NewTitle)newsTitleList.get(i); system.out.println ((i+1)+”title.getTitleName()”); } }
[b](2)Set接口存储一组唯一,无序的对象、 特点
:集合中的对象,并不按照特定的方式排序,[/b]
并且不能保存重复的对象
HashSet是Set接口的常用实现类。而set接口继承collection接口,同时没有添加新的方法,所以在
使用上与List接口的实现类使用方法一致。但是,Set方法中,不存在get
4000
方法,即没有List接口中通
过索引取值的方法,进而,有一个问题:没有get方法,Set集合,要怎么遍历输出呢 ???
————迭代器,Iterator接口,Iterator接口:表示对集合进行迭代的的迭代器
hasNext():方法判断是否还有元素可以迭代。
Next():返回迭代的下一个元素。
集合对象.iterrator();
//只修改主函数中的部分代码 NewTitle car =new NewTitle(1,”汽车”,”管理员”); NewTitle test =new NewTitle(1,”高考”,”管理员”); Set newsTitleSet=new HashSet(); newsTitleSet.add(car); newsTitleSet.add(test); system.out.println (“新闻标题为”+newsTitleSet.size()+”条”); Iterater iterator=newTitleSet.iterator(); While(iterater.hasNext()){ NewTitle title=(NetTitle)iterator.next(); system.out.println (title.getTitleName()); }
(3)Map接口
Map接口表示一组成对的键值映射对象,保存一个键到一个值的映射,通过键操作值,
Map接口最常用的实现类是HashMap,,(自己感觉,这个键key,相当于数据库的数据编号,唯
一名字,但是可以包含一个杂数据类型的对象)
Object put(Object key,Object value);
Objectget(Object key);
Boolean containsKey(Object key);
//只修改主函数的部分源代码 Student student1=new Student(“黎明”,”男”); Student student2=new Student(“刘丽”,”女”); Map studentMap=new HashMap(); studentMap.put(‘jack’,student1); studentMap.put(‘rose,student2); sysout(‘打印键集:’+studentMap.keySet()); sysout(‘打印值集:’+studentMap.values()); sysout(‘打印键值集:’+studentMap); String key=”jack”; If(studentMap.containsKey(key)){ Student student=(Student)studentMap.get(key); Sysout(“学员的姓名:”+student.getName()); }
算法(对集合操作的算法):
Java集合框架将针对不同数据结构算法的实现都保存在工具类中utilites:Collections
和Arrays,,,,Arrays定义了用来操作数组的各种方法,,,Collections类定义了一系列用于操作
集合的工具方法,也就是说,不必实例化Collections类就可以使用的方法
相关文章推荐
- Python中map()函数浅析
- Android使用Google Map浅谈
- set 命令特殊用法
- You must SET PASSWORD before executing this statement的解决方法
- 批处理 Set 命令详解 让你理解set命令第1/2页
- C#中Ilist与list的区别小结
- C#中IList<T>与List<T>的区别深入解析
- C#对list列表进行随机排序的方法
- ASP中set与dim的区别(自己的理解)
- 深入C#中get与set的详解
- Erlang中的映射组Map详细介绍
- Rails Routes中new、collection、member的区别浅析
- sql Set IDENTITY_INSERT的用法
- Vc++ 控件List Control用法总结
- c++中map的基本用法和嵌套用法实例分析
- C++实现的泛型List类分享
- set_include_path在win和linux下的区别
- C# Datagridview绑定List方法代码
- javascript radio list的实现细节(多浏览器兼容)
- jquery中map函数与each函数的区别实例介绍