栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

什么是容器

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

什么是容器

        

概念

装其他各种东西的器皿,而对程序来说就是存放对象的

容器API类图如下:

其中,

Collection代表了一个容器Collection集合

Set是没有顺序并且不可以重复

List是有顺序并且可以重复

Map是一对一对的装东西

Collection接口——定义了存取一组对象的方法,其子接口Set和List分别定义了存储方式

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

Map接口定义了存储“键(key)——值(value)映射对”的方法

Collection接口

定义的方法

Collection用法
import java.util.*;
public class Name{
	private String firstName,lastName;
    public Name(String firstName,String lastName){
    	this.firstName= firsName;
        this.lastName= lastName;
    }
    public String getFirsName(){ return firstName;}
    public String getLastName(){ return lastName;}
    public String toString(){ return firstName + " " + lastName;}
}

public class Teat {
	public static void main(string[] args){
    	Collection c =new ArrayList();
        //可以放入不同类型的对象
        c.add("hello");
        c.add(new Name("f1","11"));
        c.add(new Integer(100));
        System.out.println(c.size());
        System.out.println(c);
    }
}

输出结果:3
    	[hello,f1 11,100]
  • 容器类对象在调用remove、contains等方法时需要比较对象是否相等,这会涉及到对象类型的equals方法和hashCode方法;对于自定义的类型,需要要重写equals和hashCode方法以实现自定义的对象相等规则
    • 注意:相等的对象应该具有相等的hash codes
  • 增加Name类的equals和hashCode方法如下:
public boolean equals(Object obj){
	if(obj instanceof Name){
    	Name name =(Name) obj;
        return (firstName.equals(name.firstName))
            &&(lastName.equals(name.lastName));
    }
    return super.equals(obj);
}

public int hashCode(){
	return firstName.hashCode();
}

重写equals方法时必须重写hashCode方法

Iterator接口
  • 所有实现了Collection接口的容器类都有一个iterator方法用以返回一个实现了Iterator接口的对象
  • Iterator对象称作迭代器,用以方便的实现对容器内元素的遍历操作
  • Iterator接口定义了如下方法

boolean hasNext (); //判断游标右边是否有元素

Object next(); //返回游标右边的元素并将游标移动到下一个位置

void remove(); // 删除游标左面的元素,在执行完next之后该操作只能执行一次

List接口
  • List接口是Collection的子接口,实现List接口的容器类中的元素是有顺序的,而且可以重复
  • List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可根据序号存取容器中的元素

常用算法

Comparable接口

问:上面的算法根据什么确定容器中对象的“大小”顺序?

所有可以“排序”的类都实现了java.lang.Comparable接口,Comparable接口中只有一个方法:public int compareTo(Object obj),

该方法:

  • 返回 0 表示this==obj
  • 返回正数表示this>obj
  • 返回负数表示this

实现了Comparable接口的类通过实现comparaTo方法从而确定该类对象的排序方式

如何选择数据结构
  • 衡量标准:读的效率和改的效率
    • Array读快改慢
    • linked改快读慢
    • Hash两者之间

Map接口
  • 实现Map接口的类用来存储 键—值 对
  • 实现类有HashMap和TreeMap
  • 存储的 键—值 对通过键来标识,所以键值不能重复

JDK1.5泛型

起因:

  1. JDK1.4以前类型不明确
    1. 装入集合的类型都被当作Object对待,从而失去自己的实际类型
    2. 从集合中取出时往往需要转型,效率低,容易产生错误

解决方法:

  1. 在定义集合时同时定义集合中对象的类型

好处:

  1. 增强程序的可读性和稳定性

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/277700.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号