---------------------- <a href="http://edu.csdn.net/heima" target="blank">android培训</a>、<a href="http://edu.csdn.net/heima" target="blank">java培训</a>、期待与您交流! ----------------------
Iterator 与 Enumeration 1,枚举()Enumeration接口 枚举(Enumeration)接口定义了可以对一个对象的类集中的元素进行枚举的方法. Enumeration指定下面的两个方法 boolean hasMoreElements(); Object nextElement(); 执行后,当仍有更多的元素可提取时,hasMoreElements()方法一定返回true.当所有元素都被枚举了,则返回false. nextElement()方法获得枚举中的下一个对象. 以Vector为例. Enumeration e = v.elements(); while(e.hasMoreElements()){ System.out.println(e.nextElement()); } 2,迭代器(Iterator)接口 和Enumeration差不多,不过名称比较短,通常推荐用Iterator对Collection集合进行迭代.迭代器代替了Java集合 框架(Java Collections Framework)中的Enumeration. Collection接口中定义了iterator()方法,用于返回Collection的元素上进行迭代的迭代器. 迭代器提供了三个方法供Collection类的实例使用: boolean hasNext(); //如果仍有元素可迭代,则返回true E.next(); //返回迭代的下一个元素 void remove(); //从迭代器指向的Collection中移除迭代器返回的最后一个元素 如果要输出Vector对象vect的迭代器,如下: Iterator it = vect.iterator(); //得到迭代器对象 while(it.hasNext()){ //迭代循环 Object obj = it.next(); //取得对象 } Collections 与 Collection 1,Collection Collection类的实例表示了一组对象,这些对象也成为Collection的元素.一些Collection允许有重复的元素,而另一些则不允许.一 些Collection是有序的,而另一些则是无序的. 该接口为其实现类提供了统一的操作接口方法. .新增一个或多个元素: boolean add(E e); //确保Collection包含指定的元素 bolean addAll(Collection<? extends E> c); //将指定Collection中的所有元素添加到此Collection中 .删除一个或多个元素 boolean remove(Object o) boolean removeAll(Collection<?> c); void clear(); boolean isEmpty(); int size(); .判断是否包含一个或多个元素: boolean contains(Object o) boolean containsAll(Collection<?> c); .产生元素集合的数组对象: Iterator<E> iterator(); Object[] toArray(); <T> T[]; toArray(T[] a); 2,Collections Collections完全由在Collection上进行操作或返回Collection的静态方法组成.它包含在Collection上操作的多态算法,即"包装器" 他返回由指定Collectioni支持的新Collection,以及少数其他内容. 该类提供了以系列功能的静态操作函数. .新增 boolean addAll(Collection<? super T>c, T...elements); .填充 void fill(List<? super T> list, T obj); .复制 void copy(List<? super T> des,List<? extends T> src); .替换 boolean replaceAll(List<T> list,T oldVal,T newVal); .排序 void sor(List<T> list); void sort(List<T>,Comparator<? super T> c); .搜索 int binarySearch(List<? extends Comparable<? super T>> list, T key); int binarySearch(List<? extends T> list, T key,Comparator<? super T>c); Arrays 与 数组 Java中的一个类Arrays,专门用来操作数组.他拥有一组静态函数,包含用来操作数组(比如排序和搜索)的各种方法. 这些函数操作的数组都是Java基本数据类型的数组,具体的函数用法有很多; .填入--fill();将值填入Array中 static void fill(int[] int val); static void fill(int[]a int fromIndex,int toIndex, int val); .复制--copyOf();复制指定的数组到指定的数组中 static int[] copyOf(int[] original,iint newLength); static int[] copyOfRange(int[] original, int from, int to); .比较--equals();比较两个数组是否相等.数组拥有相同元素个数,且所有对应元素两两相等. static boolean equals(int[] a, int[] a2); .搜索--binarySearch();在排好序的数组中寻找元素 static int binarySearch(int[] a ,int key); .排序--sort();用来对Array进行排序 static void sort(int[] a); static void sort(int[] a,int formIndex, int toIndex); 列表类List List接口对Collection进行了简单的扩充,他的具体实现类常用的有ArrayList和LinkList.我们可以将任何对象放到一个List容器中, 并在需要时从中取出. .ArrayList是一种leisii数组的形式进行存储,因此他的随机访问速度极快. .LinkList的内部实现是链表,他适合与在链表中间需要频繁进行插入和删除操作. 链表LinkList LinkList是List接口的链表列表实现.并且允许所有元素(包括null).除了实现List接口外,LinkList类还为在列表的开头及结尾get(),remove(),add()元素提供了统一的命名方法.常用的有: void addFirst(E e); void addLast(E e); E getFirst(); E getLast(); E removeFirst(); E removeLast(); 可变数组ArrayList ArrayList是List接口的大小可变数组的实现.实现了所有可选列表操作,并允许包括null在内的所有元素.除了实现List接口外,此类还提供了一些方法来操作内部用来存储列表的数组的大小. 哈希集合HashSet HashSet由哈希表(实际上是一个HashMap的实例)支持,为基本操作提供了稳定性能,这些基本操作包括add(),remove(),contains(), size(). 为了在该类的实例中保存数据,数据对象必须有用hashCode函数. 如下: class Person{ int num; String name; Person(int num, String name){ this.num = num; this.name = name; } public String toString(){ return "num=" + num + "" + "name=" + name; } public int hashcode(){ return num*name.hashCode(); } public boolean equals(Student s){ return num==s.num&&name.equals(s.name); } } 同时也可以实现equals()函数,以及toString()函数用于输出.然后就可以添加该类的实例到HashSet中: HashSet hs = new HashSet(); hs.add(new Student(1,"zhangsan")); hs.add(new Student(2,"lisi")); hs.add(new Student(3,"wangwu")); hs.add(new Student(1,"zhangsan"); Iterator it = hs.iterator(); while(it.hasNext()){ System.out.println(it.next()); } 输出结果: num=1 name=zhangsan num=2 name=lisi num=3 name=wangwu num=1 name=zhangsan 可见,HashSet是一类特殊的List,他添加的元素必须实现hashCode()函数. 哈希映射HashMap 该类是基于哈希表的Map接口的实现.此实现提供所有可选的映射操作,并允许使用null值和null键.此类不保证映射的顺序,特别是 不保证该顺序恒久不变. 该类提供了三个构造函数 HashMap(); HashMap(int initaialCapacity); HashMpa(int initialCapacity,float loadFactor); 与HashSet相似,自己写的类要能够添加到HashMap中,也需要实现hashCode()函数.如下: HashMap hmap = new HashMap(); hmap.put("A",new Student(1,"zhangsan")); hmap.put("B",new Student(2,"lisi")); hmap.put("C",new Student(3,"wangwu")); hmap.put("D",new Student(1,"zhangsan")); Iterator it = hmap.keySet().iterator();//取得键迭代器 while(it.hasNext()){//循环键 String key = (String)it.next(); //取得键 String value = (Person)hmap.get(key);//取得键值 System.out.println(key+"="+value); } Sysetm.out.Println(hmap); 结果: num=1 name=zhangsan num=2 name=sisi num=3 name=wangwu num=1 name=zhangsan 所以,HashMap是一类特殊的Map,他添加的元素必须实现hashCode()函数. 哈希表HashTable 此类实现了一个哈希表,该哈希表将键映射到相应的值.任何非null对象都可以用做键或值.为了成功地在哈希表中存储和获取对象 用做键的对象必须实现hashCode方法和equals方法. 如果很多条目要存储在Hashtable中,那么与根据需要执行自动rehashing操作来增大表的容量的做法相比,使用足够大的初始容量创建 哈希表或许可以更有效地插入条目. 如下: Hashtable<String, Integer> numbers = new Hashtable<String, Integer>(); numbers.put("one",1); numbers.put("two",2); numbers.put("three",3); 要获取一个数字,可以使用如下代码: Integer n = numbers.get("two"); if(n!=null){ System.out.println("two = " + n); } 另外:Hashtable是同步的.
---------------------- <a href="http://edu.csdn.net/heima" target="blank">android培训</a>、<a href="http://edu.csdn.net/heima" target="blank">java培训</a>、期待与您交流! ---------------------- 详细请查看:<a href="http://edu.csdn.net/heima" target="blank">http://edu.csdn.net/heima</a>
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交