`
阅读更多

集合类是Java基础技术中十分重要的内容。Java集合类封装了集合中常用数据结构和算法,它犹如哪咤的烽火轮,功能强大,而且不用亲自制造(Made in America)

首先看下面这张表,本文即通过它展开相关内容。



Implementations

Interfaces

Hash Table

Resizable Array

Balanced Tree

Linked List

Hash Table + LinkedList

Set

HashSet


TreeSet


LinkedHashSet

List


ArrayList


LinkedList


Map

HashMap


TreeMap


LinkedHashMap

1


Java集合类的种类

注意图1第二列,Java在设计集合结构时,把集合划成3类:第一种Set,普通的无序集;第二种List,偏序集;第三种Map,有序对的集合。其中SetList都继承自Collection接口,Map没有从Collection继承。这样做也是没办法的事,因为Map并不是一个通常意义的集合,它的元素是一个key-value-pair,而Collection根本就不是Map,它还没有key的概念。虽然CollectionMap彼此没有继承关系,但它们有大量同名的方法。值得注意的是,Map提供了keySet()values()两个方法,分别返回一个key的集合和值的集合。

示例1通过对一个HashSet对象和一个ArrayList对象中元素使用跌代器可以显示SetList中元素之间的顺序关系:Set中元素是无序的,List不是。

  

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

public class ElementOrder ...{
    
public static void main(String[] args) ...{
        Iterator it 
= null;
        Set ht 
= new HashSet();
        ht.add(
"htA");
        ht.add(
"htB");
        ht.add(
"htC");
        ht.add(
"htD");
        it 
= ht.iterator();
        
        
while (it.hasNext()) ...{
            System.out.println(it.next());
        }

        
        List al 
= new ArrayList();
        al.add(
"alA");
        al.add(
"alB");
        al.add(
"alC");
        al.add(
"adD");
        it 
= al.iterator();
        
        
while (it.hasNext()) ...{
            System.out.println(it.next());
        }

    }

}

 

示例2Map类型的集合对象通过keySet()values()两个方法,分别返回一个key的集合(Set类型)和值的集合(Collection类型)

  

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class TestMap ...{
    
public static void main(String[] args) ...{
        Iterator it 
= null;

        Map tm 
= new HashMap();
        tm.put(
"a"new Integer(1));
        tm.put(
"b"new Integer(2));
        tm.put(
"c"new Integer(3));

        Set tk 
= tm.keySet();
        it 
= tk.iterator();

        
while (it.hasNext()) ...{
            System.out.println(it.next());
        }


        Collection tv 
= tm.values();
        it 
= tv.iterator();

        
while (it.hasNext()) ...{
            System.out.println(it.next());
        }

    }

}

 

Java集合类基于的常见数据结构

注意到图1 的第二行,是Java集合类基于的常见数据结构,它是集合对象中元素的组织方式。不同数据结构的类都有一些特定操作,参见示例。

示例3 List的一些排序操作。来自The Java Developers Almanac 1.4

 

    // Create a list 
    String[] strArray = new String[] ...{"z""a""C"}
    List list 
= Arrays.asList(strArray); 
    
// Sort 
    Collections.sort(list); // C, a, z 
    
// Case-insensitive sort
    Collections.sort(list, String.CASE_INSENSITIVE_ORDER); // a, C, z 
    
// Reverse-order sort 
    Collections.sort(list, Collections.reverseOrder()); // z, a, C 
    
// Case-insensitive reverse-order sort 
    Collections.sort(list, String.CASE_INSENSITIVE_ORDER); 
    Collections.reverse(list); 
// z, C, a

 

区别与联系

1种各类的区别和联系很明显:同行同集合类性,同列同数据结构。

操作

根据Java集合框架的体系,不同的集合类在拥有父类型的操作时由于本身的集合类型和数据结构类型的不同,都有其特有的方法。兄弟类之间有同名的方法也可能因为同样的原因有不同的实现,这正好体现了OO的多态性。

其他

不可忽视的是java.util.Collections提供很多操作集合对象的静态方法。集合在Java还有其他非官方实现形式,如开源的Trove等。值得一提的是,示例1Set ht = new HashSet();的定义方式体现了DIP(Dependence Inversion Principle,依赖倒转原则)

分享到:
评论

相关推荐

    C++编程:建造集合类实训

    C++编程:建造集合类实训 本文将详细讲解C++编程中集合类的实现,包括集合类的定义、添加元素、删除元素、判断集合是否为空或满、判断元素是否包含在集合中、计算集合中的元素总数、输出集合中的元素、求两个集合的...

    实现复数集合类 使用c++

    实现复数集合类 要求:1、实现两个类:集合类(Cassemblage )和复数类(Cmycomplex)。  2、输入:分别输入集合中元素个数和元素(实部和虚部)。  3、输出:按照复数模的大小从小到大输出,不考虑两个复数模相等...

    java集合类线程安全.doc

    Java 集合类线程安全 Java 集合框架是由 Java 平台标准版 1.2 引入的通用数据结构与算法框架。其灵活的面对对象设计受到了广大 Java 程序员的一致青睐,为 Java 平台的成熟奠定了坚实的基础。 线程安全不是一个...

    java集合类详解(set list ArrayList等java集合类详述)

    Java 集合类详解 Java 集合类是 Java 语言中的一种基本数据结构,用于存储和操作大量数据。集合类可以分为三大类:Collection、List 和 Set。 Collection 是集合框架中的根接口,提供了基本的集合操作,如 add、...

    java自定义集合类

    自定义集合类则是开发者根据特定需求扩展Java集合框架的行为,以满足个性化或特定业务场景的功能需求。以下是对"java自定义集合类"这一主题的详细解释。 首先,Java集合框架包括接口(如List、Set、Map)和实现这些...

    java集合类的代码

    Java集合类是Java编程语言中一个非常重要的概念,它提供了数据结构和算法的实现,使得在处理一组对象时更加高效和灵活。Java集合框架包括接口(如List、Set、Queue等)和实现这些接口的类(如ArrayList、HashSet、...

    第13讲 JAVA集合类.ppt

    Java集合类是Java编程语言中用于存储和管理对象的关键组件,它们构成了Java Collections Framework的核心。这个框架提供了一组高效、灵活的数据结构,使得开发者能够轻松地处理数据集合,而无需关心底层实现的复杂性...

    C#的6种常用集合类大比拼

    在C#编程语言中,集合类是处理数据结构的关键组件,它们提供了比传统数组更灵活、功能更丰富的数据存储方式。本文将深入探讨C#中六种常用的集合类,包括它们的特点、用法以及与其他数据结构如数组的区别,旨在帮助...

    VC++集合类,详细例子。

    MFC 集合类可以按形态和设计方案来分类。MFC 为三种类型的集合形态提供了类: 列表 数组 映射 MFC 还提供三种类型的设计方案: 不使用 C++ 模板。 使用由简单元素组成的基于 C++ 模板的集合。 使用由类型...

    Java集合类详解总结

    ### Java集合类详解总结 在Java编程中,集合框架(Collection Framework)是处理一组对象的强大工具,它提供了标准的数据结构来存储和操作这些对象。Java集合框架主要包括`Collection`、`Set`、`List`、`Queue`、`...

    java集合类演示源码

    集合类的框架为集合的实现者提供了大量的接口和抽象类,并对其中的某些机制给予了描述,例如,Iterator(迭代协议)。实现Comparable接口或Comparator接口,用户可以根据需要对集合中的元素进行排序。为了方便用户...

    泛型集合类的大概应用

    根据给定的信息,本文将详细解释“泛型集合类的大致应用”,重点在于Java中的泛型集合类,如`ArrayList`、`HashMap`等,并结合实际代码示例进行讲解。 ### 泛型集合类概述 在Java编程语言中,集合框架提供了一组...

    集合类框架图

    java集合类框架图

    控制台程序 集合类的应用

    在IT行业中,集合类是数据结构的一个重要组成部分,它们提供了组织和操作对象的方便方式。在本案例中,我们关注的是一个名为"Animals"的集合类,它扩展了Java中的集合框架,允许通过关键字来索引Animal对象。此外,...

    java反射,获取所有属性、方法以及List集合类

    本篇文章将深入探讨如何使用Java反射来获取一个类的所有属性、方法,并处理List集合类。 首先,让我们了解Java反射的基础概念。在Java中,`java.lang.Class`类代表运行时的类信息。我们可以使用`Class.forName()`...

    Week17_第9讲_泛型与集合类.pdf

    ### 泛型与集合类知识点总结 #### 一、泛型简介 - **定义**:泛型是Java SE 5.0引入的新特性,它允许程序员在编译时检查类型安全,并且所有的强制转换都是自动和隐式的,提高了代码的重用率。 - **作用**: - ...

    Java基础----集合类汇总

    本文将深入探讨Java集合类的汇总,包括List、Set和Map这三大核心接口及其实现类。 首先,让我们从List接口开始。List是一种有序的集合,允许有重复元素,并且支持通过索引来访问元素。ArrayList和LinkedList是List...

    Java集合排序及java集合类详解.pdf

    ### Java集合排序及Java集合类详解 #### 一、集合框架概述 集合框架是Java编程语言的核心组件之一,用于组织和操作数据集。Java集合框架提供了多种数据结构,包括列表(List)、集(Set)和映射(Map),这些数据结构...

    整数集合类的各种操作

    在编程领域,集合类是数据结构中的重要组成部分,主要用于存储一组不重复的元素。在Java中,`java.util.Set`接口及其子接口如`HashSet`、`TreeSet`等提供了整数集合的操作。本篇文章将深入探讨如何实现整数集合的...

    Cloud_Foundry中Java应用集合类内存泄漏检测_叶瑞浩.caj

    本文基于针对集合类对象的内存泄漏检测方案实现了口oudFoundry云平台 中Java应用内存泄漏的检测,通过监控集合类对象的内存消耗和集合内元素的 使用情况,得出对象内存泄漏的可能性大小,...

Global site tag (gtag.js) - Google Analytics