`
johnston678
  • 浏览: 31179 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

Java 集合框架小结

阅读更多
Java 集合框架(Java Collections Framework,JCF),它主要由一组用来操作对象的接口组成的.
集合接口有如下几种:
Collection接口:定义了存取一组对象的方法,其子接口Set和List分别定义了存储方式
Set接口:Set中的数据对象没有顺序且不可以重复
List接口:List中的数据对象有顺序且可以重复
Map接口定义了存储"键(key)-值(value)映射对"的方法

一 Collection接口中所定义的方法:
boolean add(E e)
          确保此 collection 包含指定的元素(可选操作)。
boolean addAll(Collection<? extends E> c)
          将指定 collection 中的所有元素都添加到此 collection 中(可选操作)。
void clear()
          移除此 collection 中的所有元素(可选操作)。
boolean contains(Object o)
          如果此 collection 包含指定的元素,则返回 true。
boolean containsAll(Collection<?> c)
          如果此 collection 包含指定 collection 中的所有元素,则返回 true。
boolean equals(Object o)
          比较此 collection 与指定对象是否相等。
int hashCode()
          返回此 collection 的哈希码值。
boolean isEmpty()
          如果此 collection 不包含元素,则返回 true。
Iterator<E> iterator()
          返回在此 collection 的元素上进行迭代的迭代器。
boolean remove(Object o)
          从此 collection 中移除指定元素的单个实例,如果存在的话(可选操作)。
boolean removeAll(Collection<?> c)
          移除此 collection 中那些也包含在指定 collection 中的所有元素(可选操作)。
boolean retainAll(Collection<?> c)
          仅保留此 collection 中那些也包含在指定 collection 的元素(可选操作)。
int size()
          返回此 collection 中的元素数。
Object[] toArray()
          返回包含此 collection 中所有元素的数组。
<T> T[] toArray(T[] a)
          返回包含此 collection 中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同。

二 Iterator接口
所有实现了Collection接口的容器类都有一个iterator方法用以返回一个实现了Iterator接口的对象
Iterator对象称作迭代器,用以方便的实现对容器内元素的遍历操作.
Iterator接口定义了如下方法:
boolean hasNext()
          如果仍有元素可以迭代,则返回 true。
E next()
          返回迭代的下一个元素。
void remove()
          从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。
下面举例说明Collection和迭代器的一些常见用法:

/**
 * 测试Collection接口中方法的常见用法
 * 测试迭代器的简单用法
 */
package com.basic.collection;

import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;

/**
 * @author johnston678
 *
 * @version 2009-05-06
 */
public class TestCollection {

 /**
  * @param args
  */
 public static void main(String[] args) {
  
  Collection c = new HashSet();
  c.add("hello");
  //c.add(new Integer(100));
  System.out.println(c.size());
  c.remove("hello");
  System.out.println(c);
  c.add("Tom");
  c.add("Jack");
  Iterator i = c.iterator();
  while (i.hasNext()) {
   //next()返回值为Object类型,需要转换为相应的类型
   String str = (String) i.next();
   System.out.println(str);
  }
 }

}



三 Set接口
Set接口是Collection的子接口,Set接口没有提供额外的方法,但实现Set接口的容器类中的元素是没有顺序的,而且不可以重复
Set容器可以与数学中的"集合"的概念相对应.JDK API中所提供的Set容器类常见的有:HashSet,TreeSet等
四 List接口
List接口是Collection的子接口,实现List接口的容器类中的元素是有顺序的,而且可以重复.List容器中的元素都对应一个整数型
的序号记载其在容器中的位置,可以根据序号存取容器中的元素.JDK API所提供的List容器类常见有:ArrayList,LinkedList等
五 Collections类
类java.util.Collections提供了在 collection 上进行操作或返回 collection 的静态方法.
常用方法:
public static <T extends Comparable<? super T>> void sort(List<T> list)根据元素的自然顺序 对指定列表按升序进行排序
public static void reverse(List<?> list)反转指定列表中元素的顺序。
public static <T> int binarySearch(List<? extends Comparable<? super T>> list,T key)使用二分搜索法搜索指定列表,以获得指定对象。
public static <T> void copy(List<? super T> dest,List<? extends T> src)将所有元素从一个列表复制到另一个列表
六 Comparable接口
public interface Comparable<T>此接口强行对实现它的每个类的对象进行整体排序
常见方法:
int compareTo(T o)比较此对象与指定对象的顺序
七 Map接口
实现Map接口的类用来存储健-值对.Map接口的实现类有HashMap和TreeMap等.Map类中存储的键-值对通过键来标识,所以键值不能重复
常用方法有:
V get(Object key)返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。
V put(K key,V value)将指定的值与此映射中的指定键关联(可选操作)。
V remove(Object key)如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。
boolean containsKey(Object key)如果此映射包含指定键的映射关系,则返回 true。
boolean containsValue(Object value)如果此映射将一个或多个键映射到指定值,则返回 true。
int size()返回此映射中的键-值映射关系数
boolean isEmpty()如果此映射未包含键-值映射关系,则返回 true。
void putAll(Map<? extends K,? extends V> m)从指定映射中将所有映射关系复制到此映射中(可选操作)。
void clear()从此映射中移除所有映射关系(可选操作)。
举例说明以上类和接口的常见用法:
/**
 * 测试常用集合类的用法
 */
package com.basic.collection;

import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @author Administrator
 * 
 * @version 2009-05-06
 */
public class TestExample {

 /**
  * @param args
  */
 public static void main(String[] args) {  
  //Set接口的常见方法应用
  Set s = new HashSet();
  s.add("hello");
  s.add("world");
  s.add(new Integer(100));
  s.add("hello"); //相同的元素不会被加入
  System.out.println(s);
  
  //List接口的常见方法应用
  List l1 = new LinkedList(); //下标从0开始
  for (int i=0; i<=5; i++) {
   l1.add("a"+i);
  }
  l1.add(3,"a100");
  l1.set(6, "a200");
  l1.remove(1);
  
  //Collections类的常见方法应用
  Collections.shuffle(l1); //随机排列
  Collections.sort(l1); //排序
  Collections.reverse(l1); //逆续
  Collections.sort(l1); //排序
  System.out.println(Collections.binarySearch(l1,"a2")); //折半查找,必须先对集合升序排序才可以进行折半查找
  
  //Map接口的常见访求应用
  Map m1 = new HashMap();
  Map m2 = new HashMap();
  m1.put("one", new Integer(1));
  m1.put("two", new Integer(2));
  m1.put("three", new Integer(3));
  m2.put("A", new Integer(1));
  m2.put("B", new Integer(2));
  System.out.println(m1.size());
  System.out.println(m1.containsKey("one"));
  System.out.println(m2.containsValue(new Integer(1)));
  if (m1.containsKey("two")) {
   int i = ((Integer) m1.get("two")).intValue();
   System.out.println(i);
  }  
  Map m3 = new HashMap(m1);  
  m3.putAll(m2);
  System.out.println(m3);  
 }

}
分享到:
评论

相关推荐

    java集合小结

    ### Java集合小结 #### 一、集合的概念与重要性 集合是Java编程语言中用于存储、管理和操作数据的一种重要工具。它提供了多种数据结构来适应不同的应用场景,从而有效地提高程序开发效率。从数据结构的角度来看,...

    Java基础知识小结

    ### Java基础知识小结 #### 1.1 `getPath()`、`getAbsolutePath()`、`getCanonicalPath()`的区别 在Java中,处理文件路径时经常会用到`getPath()`、`getAbsolutePath()`以及`getCanonicalPath()`这三个方法。它们...

    Java Methods-The Java Collections Framework.ppt

    Java 集合框架 Java 集合框架是一个强大的框架,提供了各种集合类和接口,以方便开发者处理数据。它是 Java 语言的核心组件之一,广泛应用于各种应用程序中。 集合框架概述 集合框架是一个泛型系统,提供了一个...

    集合小结 Collection

    ### 集合小结 Collection #### Java集合概述 Java中的集合是一组对象的组合,类似于C++标准模板库中的容器。但是与C++不同的是,Java集合不仅可以存储单一类型的数据,还可以存储不同类型的对象。这使得Java集合...

    Java程序设计 3 数组与集合 简图.ppt

    实现集合可以通过实现Collection接口来完成,Collection接口是Java集合框架中的一个接口,Collection接口的实现类有ArrayList、LinkedList等。Collection接口的常用方法有add、remove、contains等。 小结 本节课...

    java课程小结.rar_北京理工大学JAVA课程

    这个“java课程小结.rar_北京理工大学JAVA课程”压缩包中包含的“课程小结”文件,很可能是教授精心编写的教学精华,旨在帮助学生巩固所学知识并为后续学习打下坚实基础。 在Java课程中,有几个核心概念和技术是必...

    java基础知识从业必备知识点结构图小结.rar

    为了全面理解Java基础知识,本小结将按照给定的文件名,逐一解析关键知识点。 1. **Java基础知识** 这一部分通常包括Java语言的基础语法,如变量、数据类型、运算符、流程控制(if语句、switch、for、while循环等...

    java开发经验小结

    3. **避免在生产环境中使用System.out.println()**:在调试期间,可以使用System.out.println(),但在部署时,应替换为日志框架,如Log4j或Logback,以便记录有意义的日志信息,同时减少系统资源的消耗。 4. **参数...

    java笔试题小结

    ### Java笔试题小结 #### 1. Java 字符串(String) **问题**: String 类的特点是什么?与 StringBuffer 的区别? **分析与解答**: `String` 类在 Java 中是不可变的,即一旦创建了一个字符串对象,其内容就不能...

    java多态小结

    例如,在使用集合框架时,我们可以声明一个`List`类型的变量,然后将其赋值为`ArrayList`、`LinkedList`等不同实现的具体实例,而无需关心具体是哪一种实现,因为所有实现都遵循相同的接口规范。 此外,多态也是...

    Java线程类小结(附思维导图)

    - **Executor框架**:Java 5引入的线程池模型,提高了系统性能和管理线程的便利性。 - **ThreadPoolExecutor**:最常用的线程池实现,参数包括核心线程数、最大线程数、队列大小和拒绝策略。 - **Executors工厂...

    Java(J2SE、J2EE)学习小结

    Java是世界上最流行的编程语言之一,尤其在企业级应用开发中占据主导地位。...这只是Java J2SE和J2EE学习中的一小部分,要成为一名出色的Java开发者,还需要不断深入学习和实践,掌握更多的高级特性、框架和最佳实践。

    java.util.vector中vector小结

    在Java编程语言中,`java.util....总之,`Vector`是Java集合框架的一部分,提供了一种线程安全的方式来管理动态数组。理解其特性和用法对于编写多线程Java程序至关重要,但同时也要权衡其性能和线程安全之间的平衡。

    Java语言程序设计

    不但详细介绍了Java语言本身,而且讨论了面向对象的设计思想和编程方法、UML建模语言、图形用户界面的编程方法、网络和数据库程序的编程方法、线程的使用、Java集合框架等实用开发技术。全书以面向对象的程序设计...

    Java使用Iterator迭代器遍历集合数据的方法小结

    Iterator迭代器是Java集合框架中的一种接口,提供了遍历集合元素的能力。通过Iterator迭代器,可以遍历ArrayList、Set、Map等各种集合类型。 1、使用迭代器遍历ArrayList集合 在Java中,ArrayList是一种常见的集合...

    Tedu一阶段JavaSet集合和List集合

    - **Collection接口**:这是Java集合框架的基础接口,所有的集合类都需要直接或间接地实现此接口。它提供了基本的操作方法,如添加(add)、移除(remove)、判断是否包含某些元素(contains)等。 #### 二、List接口与...

    java初学者必备基础教材

    6. **本章小结**:这一章主要介绍了Java编程的基础,包括语言的面向对象特性,如何编写简单的程序,理解基本数据类型,以及如何使用数组存储和操作数据。这些都是进一步学习Java类、对象、异常处理、输入输出、集合...

Global site tag (gtag.js) - Google Analytics