java中容器(Collection)的小结

容器的概念:
     Java API所提供的一系列的实例,用于在程序中存放对象。
 
容器API
     J2SDK所提供的容器API位于java.util包内。
容器API的类图结构如下所示:
      


     Collection接口定义了存取一组对象的方法,其子接口Set和List分别定义了存储方式。
Set中的数据对象没有顺序且不可以重复。
List中的数据对象有顺序且可以重复。
Map接口定义了存储“键(key)-值(value)映射对"的方法。
 
容器类对象在调用remove、contains等方法时需要比较对象是否相等,这会涉及到对象
  类型的equals方法和hashCode方法:对于自定义的类型,需要重写equals和hashCode方法以
  实现定义的对象相等规则。
  
  注意:
      相等的对象应该具有相等的hashCode值。
 
  示例代码如下:
     public boolean equals(Object obj){
   if(obj instanceof Name){
   Name name=(Name)obj;
return (firstName.equals(name.firstName);
}
return super.equals(obj);
}
public int hashCode(){
   return firstName.hashCode();
}
 
  Iterator接口
       所有实现了Collection接口的容器类都有一个iterator方法,用以返回一个实现了Collection
接口的对象。
  Iteratory对象称作迭代器,用以方便的实现对容器内元素的遍历操作。
  Iteratory接口定义了如下方法:
          boolean hasNext();  //判断游标右边是否有元素
          Object  next();     //返回游标右边的元素并将游标移到下一个位置
          void   remove();    //删除游标左面的元素,在执行next之后该操作只执行一次  
  
  补充:JDK1.5增强的for循环
        增强的for循环对于遍历array或collection的时候相当简便。
  
  缺陷:
     数组:不能方便的访问下标值
 集合:与使用iterator相比,不能方便的删除集合中的内容(在内部也是调用iterator)


       总结:
          除了简单遍历并读取其中的内容外,不建议使用增强for循环 


    Set接口
      Set接口是Collection的子接口,Set接口没有提供额外的方法,但实现Set接口的容器类中的
元素是没有顺序的,而且不可以重复的。
 J2SDK API 所提供的Set容器类有HashSet,TreeSet等。
 
   List接口
       List接口是Collection的子接口,实现List接口的容器类中元素是有顺序的,而且可以重复。
  List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。
  J2SDK API所提供的List容器类有ArrayList,LinkedList等。
  
  List常用算法
       类java.util.Collections提供了一些静态方法实现了基于List容器的一些常用算法。
  
  void  sort(List)  对List容器内的元素排序
  void  shuffle(List)  对List容器内的对象进行随机排列
  void  reverse(List)  对List容器内的对象进行逆序排列
  void  fill(List,Object) 用一个特定的对象重写整个List容器
  void  copy(List dest,List src) 将src容器内容拷到dest容器中
  int  binarySearch(List,Object) 对于顺序的List容器,采用折半查找的方法查找特定对象
  
  Comparable接口
       所有可以"排序"的类都实现了java.lang.Comparable接口,Comparable接口中只有一个方法
  
  pubic int compareTo(Object obj),该方法:
  返回0表示 this==obj
  返回正数表示this>obj
  返回负数表示this<obj
  
  实现了Comparable接口的类通过实现compateTo方法从而确定该类对象的排序方式。
  
如何选择数据结构***
      衡量标准:读的效率和改的效率
 Array读快改慢
 Linked改快读慢
 Hash两者之间
 
 
Map接口
  实现Map接口的类用来存储键值对。
  Map接口的实现类有HashMap和TreeMap等。
  Map类中存储的键-值对通过键来标识,所以键值不能重复。
  
  
泛型
 起因:
    JDK1.4以前类型不明确:
  1.装入集合的类型都被当做Object对待,从而失去自己的实际类型。
  2.从集合取出时往往需要转型,效率低,容易产生错误。
 解决办法:
     在定义集合的时候同时定义集合中对象的类型。
 好处:
     增强程序的可读性和稳定性
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值