正在加载图片...
Chapter 10: Detecting Types 下面,我们要找出各种Pet的数量,所以我们要用一个带int的类来保 存这个信息。你可以把它当成是一个可以修改的 Integer: //: c10: Counter. java package cl0 public class Counter public String tostring ()(return Integer tostring()i 1 ///: 下一步,我们需要一个能同时持有两种对象的工具:一个表示Pet的类 型,另一个是表示宠物数量的 Counter。也就是说,我们要问“这里有 多少 Gerbil对象?”普通数组作不了这个,因为它是用下标来定位的。 我们要的是能用Pet的类型来定位的数组。我们要将 Counter对象同 Pet对象关联起来。为了能准确的做到这一点,我们会用到一种被称为 “关联性数组( associative array)”的标准数据结构。下面是它最简单 的实现 //: c10: AssociativeArray java Associates keys with values package cl0 import com. bruceeckel. simpletest public class AssociativeArray private static Test monitor new Test( private object[][] pairs private int index public AssociativeArray (int length)I public void put(object key, object value) I if (index > pairs length) airs [index++]= new object[]I key, value )i public object get(object key) t ++) if(key equals(pairs [i][o]) return pairs [i][1] throw new RuntimeException ("Failed to find key )i public string tostring()( String result for (int i =0; i< index; 1++) result + pairs [i][0]+ pairs [i][1 if(i inde It return result 第8页共17页 www.wgqqh.com/shhgs/tij.htmlChapter 10: Detecting Types www.wgqqh.com/shhgs/tij.html email:shhgs@sohu.com 第 8 页 共 17 页 下面,我们要找出各种 Pet 的数量,所以我们要用一个带 int 的类来保 存这个信息。你可以把它当成是一个可以修改的 Integer: //: c10:Counter.java package c10; public class Counter { int i; public String toString() { return Integer.toString(i); } } ///:~ 下一步,我们需要一个能同时持有两种对象的工具:一个表示 Pet 的类 型,另一个是表示宠物数量的 Counter。也就是说,我们要问“这里有 多少 Gerbil 对象?”普通数组作不了这个,因为它是用下标来定位的。 我们要的是能用 Pet 的类型来定位的数组。我们要将 Counter 对象同 Pet 对象关联起来。为了能准确的做到这一点,我们会用到一种被称为 “关联性数组(associative array)”的标准数据结构。下面是它最简单 的实现: //: c10:AssociativeArray.java // Associates keys with values. package c10; import com.bruceeckel.simpletest.*; public class AssociativeArray { private static Test monitor = new Test(); private Object[][] pairs; private int index; public AssociativeArray(int length) { pairs = new Object[length][2]; } public void put(Object key, Object value) { if(index >= pairs.length) throw new ArrayIndexOutOfBoundsException(); pairs[index++] = new Object[] { key, value }; } public Object get(Object key) { for(int i = 0; i < index; i++) if(key.equals(pairs[i][0])) return pairs[i][1]; throw new RuntimeException("Failed to find key"); } public String toString() { String result = ""; for(int i = 0; i < index; i++) { result += pairs[i][0] + " : " + pairs[i][1]; if(i < index - 1) result += "\n"; } return result; }
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有