集合框架笔记(上)

原创 2007年09月18日 20:39:00

 今天所学到的知识包括:
      java.util包中的List接口,Collection接口,Comparator接口,Iterator接口,以及实现了List接口的ArrayList类,及Collections类,顺便复习了一下toString()函数和compareTo()函数。
      Collection接口是集合类中的根接口,所有的接口都继承自它。
      今天的重头戏是ArrayList类,可以把它理解为C语言下的一个链表,通常用一个称为“迭代子”的接口来访问它。这个迭代子就是Iterator接口,虽然它被放在java.util包下的interface一类中,但是实际上可以把它实例化。语法如下。
                 Iterator i=某个集合类对象.iterator();
      这里的iterator()是java.util包下几乎所有类中都存在的一个函数,用以返回一个与该类对象相关联的迭代子。这里很奇怪,为什么接口能够实例化,我还在寻找答案。
      将迭代子与某个集合类对象关联后,就可以通过迭代子中的成员函数hasNext(),next(),以及remove()来访问集合类对象中的元素了。迭代子最先指向该集合类对象的第一个元素之前,hasNext()函数将判断接下来是否有元素存在,如果没有则返回0;next()函数将返回接下来的第一个元素;remove()用于删除迭代子所在位置的前一个元素。
      ArrayList类本身类似于C语言中的链表,它提供了一个toArray()函数用于将其对象内的元素转换为一个Object[]类型的数组。
     
      Collections是一个很有用的类,它比Collection接口只多了一个s,但是差之千里。Collections类中全部是静态方法,因此这个类也就没有实例化的意义。它提供了几个很有用的函数。Collections.sort(集合类对象),由于将集合类对象中元素按照自然顺序排列,如果集合类对象中的元素是引用类型,无法直接比较,那么还需要重写toCompare()函数,并且要重写toString()函数,便于打印输出。另外,还有一种更外高明但是也更为复杂的排序方式Collections.sort(集合类对象,Comparator T).
      这里的Comparator是个什么东东?它也是java.util包中的一个接口,称为“比较器”,sort方法将按照比较器中指定的方法来对元素进行比较。跟Iterator一样,它也是需要实例化的。它有2个成员函数,int compare(object o1,objcet o2),boolean equals(objcet o),分开说明。
      compare(object o1,objcet o2),该函数提供比较的标准,一般来说,在函数内部,我们需要把object o1和object o2转换为所需要比较的集合类,这样才可以将compare()函数与集合类相关联。如果你想认为如果o1比o2大,那么返回正数,如果o1比o2小,则返回负数,否则返回0。JAVA编译器是很笨的,它只会根据返回的值是正数,负数,或者0来判断大小。
      而equals()函数在java.lang.object类中已经存在,所以一般在实现Comparator接口中的类中,就算是不实现该方法,编译的时候也一样不会报错。
    
     排序之后,还可以用Collections.binarySearch(parament,parament)在已经排序过的对象中进行查找,是不是很像Array类呢?

 

附今天写的代码

import java.util.*;
class ArrayListTest
{
 public static void IteratorTool(Collection c)
 {
  Iterator i=c.iterator();
  while(i.hasNext())
     System.out.println(i.next());   
 }
 public static void main(String[] args)
 {
  Player p1=new Player(1,"zhangsan");
  Player p2=new Player(3,"wangwu");
  Player p3=new Player(2,"lisi");
  ArrayList arr=new ArrayList();
  arr.add(p1);
  arr.add(p2);
  arr.add(p3);
  IteratorTool(arr);
  System.out.println("there are"+arr.size()+"elements");
  Collections.sort(arr);
  IteratorTool(arr);
  Collections.sort(arr,new Player.ComparatorAble());
  IteratorTool(arr);
  Object[] flag=arr.toArray();
  for(int i=0;i<flag.length;i++)
      System.out.println(flag[i]);
 }
}
class Player implements Comparable
{
 Player(int id,String name)
 {
  this.id=id;
  this.name=name;
 }
 int id;
 String name;
 static class ComparatorAble implements Comparator
 {
  public int compare(Object o1,Object o2)
  {
   Player p1=(Player)o1;
   Player p2=(Player)o2;
   if(p1.id>p2.id)
      return -1;
      else if(p1.id==p2.id)
          return 0;
          else
              return 1;
  }
 }
 public int compareTo(Object o)
 {
  Player p=(Player)o;
  if(id>p.id)
     return 1;
     else if(id==p.id)
         return 0;
         else
            return 0;
 }
 public String toString()
 {
  return id+":"+name;
 }
}
 

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

黑马程序员_学习笔记集合框架(I)

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- Java的Collection集合类是一种工具类,用于存储不定长度的数据。 Collecti...

(32)Java学习笔记——集合框架 / Collection 接口 / Iterator 迭代器

集合: 存储多个对象的容器类型的变量。集合类提供了变化长度的需求。 集合和数组的不同点: A/ 长度区别: ------| 数组长度固定 ------|集合长度可变 B/ 内容不同 ------|...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

[学习笔记]Java集合框架之Map集合

Map集合 1. 概述 Map集合是一个接口,和Collection集合不同的是,它是双列集合,也就是说它所存储的是键值对。 2. 特点 Map集合存储的是键值对,其中键要...

JavaSE学习笔记--集合框架

---------------------- http://edu.csdn.net/heima" target="blank">android培训、http://edu.csdn.net/heima...

(34)Java学习笔记——集合框架 / 泛型

泛型: 是一种吧类型明确的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型。参数化类型,把类型当作参数一样的传递。 格式: 此处的数据类型只能是引用类型。 好处: A/ 把运行时期的问题提前...

黑马程序员_JAVA笔记14——集合框架(List、HashSet、TreeSet)

------- android培训、java培训、期待与您交流! ---------- 1、为什么出现集合类,面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储...

【黑马程序员】Java笔记--集合框架

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-Java提供了数种持有对象的方式,包括语言内置的Array,还有就是utilities中提供的容器类(contai...

Java学习笔记——JCF集合框架

List基本使用 特别是有顺序,所有可以用get(i)读取出来 public static void main(String[] args) { //1、List基本使用 List ls...

(36)Java学习笔记——集合框架 / Set集合

Set集合 不包含重复元素,存储顺序和取出顺序不一致 HashSet 不保证Set的迭代顺序,特别是不保证该顺序恒久不变。 范例: package cn.itcast_01; import ja...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)