java集合框架:接口,实现类,算法

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()”);
}
}
  

              (2)Set接口存储一组唯一,无序的对象、  特点  :集合中的对象,并不按照特定的方式排序,

                        并且不能保存重复的对象

                          HashSet是Set接口的常用实现类。而set接口继承collection接口,同时没有添加新的方法,所以在

                 使用上与List接口的实现类使用方法一致。但是,Set方法中,不存在get方法,即没有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类就可以使用的方法




 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值