本来想写一篇《JAVA容器论》的,讲的是JAVA里容器类的一些知识,原因是前天和小付去面试被问到了关于JAVA容器的一些知识,有一点拿不准。但是发现容器的东西还真不少,于是决定分开来写,我想没有人喜欢大部头的。这里所谓“容器”就是能够持有数据(对象的reference或primitives)集合的数据结构,比如我们熟悉的数组、链表和Hash表等等。借这个机会想把JAVA的容器类相关的知识好好的总结一下。下面就从聊聊最简单的容器--数组开始吧!
数组是JAVA语言内置的数据类型,它是一个线性的序列,所以它可以快速的访问其他的元素。但是速度是要有代价的,当你创建了一个数组之后,它的容量就固定了,而且在其生命周期里是不能改变的。还有一点,JAVA里面的数组是会做边界检查的,所以当你越界访问时,会抛出RuntimeException,所以不用担心在C或C++因为不做边界检查而出现的问题了,当然边界检查是以牺牲效率为代价的。数组与其它容器类的区别体现在三个方面:效率、类型识别和可以持有primitives。
JAVA里面提供的其他容器还包括List,Set和Map。他们处理对象的时候就好像这些这些对象都没有自己的类型一样,容器将它所含的元素都看成是JAVA中所有类的根类Object类型的,这样我们只需创建一种容器,就能把所有的类型的对象全部放进去。但是当取出的时候,那就需要我们自己进行类型转换了,不过在JAVA Tiger版里面新引入了“泛型”的概念,结合容器类一起使用就可以解决类型转换的问题,关于“泛型”这就不详细讲解了。从上面的角度来看,这种做法很不错,但是就是苦了primitives,如果是常量的话,可以把primitive转换成wrapper类然后放进容器里面,如果是变量的话,那就只能放在你自己的类里了。与其他容器类相比,数组会在编译的时候作类型检查,从而防止你插入错误类型的对象,或者在提取对象的时候把对象的类型给搞错了,JAVA在编译和运行的时候都能阻止你将一个不恰当的消息传给对象。至于效率,数组无疑是要高于其他容器类的,因为有些容器类的实现就是基于数组的,比如ArrayList。不论从类型检查还是效率的角度来考虑,我们首选数组来作为容器都是没错的,但是数组的缺点就是功能太弱了,所以才会有容器类的出现。
要多说几句的就是,java.util包里面有一个Arrays类,它包括了一组可以用于数组的static的工具方法,其中最基本的是四个方法:用来比较两个数组是否相等的equals();用来填充数组的fill();用来对数组进行排序的sort();以及用于在一个已经排序的数组中查找元素的binarySearch()。所有这些方法都对primitives和Object进行了重载。此外还有一个asList()方法,它接受一个数组,然后把它转成一个List容器。JAVA标准类库还提供了一个System.arraycopy()的静态方法,它能以较快的速度拷贝数组,对primitive和Object都进行了重载,但是注意当对Object数组进行拷贝时,进行的是浅拷贝(shallow copy)。
分享到:
相关推荐
Java 集合框架提供了多种集合类,包括ArrayList、LinkedList、HashSet 等。 在本实验中,我们没有直接使用集合,而是使用数组来实现实验题目。但是,集合可以用来实现更加灵活和高效的数据存储和操作。 Java 数组...
首先,数组在Java中的特性与其他语言有所不同。Java中的数组是一个类,这使得它在Java语言中具有特别的地位。数组可以用来存储基本数据类型(如int, double等)或引用数据类型(如String, 对象等)。数组声明后必须...
这是本人写的一个基于JSON的完整项目,实现了Java对象、数组、集合转换为Json(Json转化为Java对象、数组、集合)。这是一个完整的项目,下载解压后直接导入MyEclipse/Eclipse中,运行com.demo.JSONDemo类即可看到效果...
Java 集合与数组 Java 集合与数组是 Java 编程语言中两个非常重要的概念。集合和数组都是用于存储和管理数据的数据结构,但它们有着不同的特点和...了解集合框架的体系结构、集合类和接口的使用是 Java 编程的基础。
常用的集合类包括ArrayList、LinkedList、HashSet、HashMap等。例如,`ArrayList.add()`和`List.add(int index, Object o)`分别用于在列表末尾添加元素和在指定位置插入元素。`Map.put()`方法将键值对放入Map,`Map....
在Java编程语言中,数组是一种特殊的数据结构,用于存储同类型元素的集合。它们提供了一种方式来组织和管理大量数据,使得我们可以高效地访问和操作这些数据。本章将深入探讨数组的基本概念、定义以及如何在实际编程...
Java的`Arrays`类提供了许多有用的方法,如`sort()`用于排序数组,`equals()`比较两个数组是否相等,`fill()`用于填充数组元素,以及`deepEquals()`用于比较多维数组。 六、复制数组 要复制一个数组,可以使用`...
Java程序设计 3 数组与集合 简图 Java程序设计是Java编程语言的基础,数组和集合是Java程序设计中两个非常重要的概念。本节课我们将对Java程序设计中的数组和集合进行详细的讲解。 数组 数组是一种基本的数据结构...
在这个话题中,我们将探讨Java中的数组和集合类,这些都是JavaSE阶段的重要知识点。 首先,让我们从面向对象编程说起。面向对象编程(OOP)是Java语言的基础,与面向过程编程不同,后者关注的是执行步骤,而OOP更...
在IT领域,特别是Java编程中,对象数组与JSON之间的转换是一项常见且重要的操作。下面将深入探讨如何在Java中实现对象数组向JSON的转换,并反过来将JSON字符串转换为Java对象数组,同时也会提及一些相关技术和代码...
对于集合类,如`ArrayList`,我们可以使用`Collections.sort()`方法,它的用法与`Arrays.sort()`类似,但需要传入集合而不是数组。同样,如果需要按多个属性排序,也需提供自定义`Comparator`。 在某些情况下,Java...
### JSON转对象数组与对象数组转JSON(Java) 在Java编程语言中,处理...以上就是关于Java中JSON字符串与对象数组之间相互转换的基本流程和技术要点。通过这种方式,开发者可以更加灵活地处理各种复杂的JSON数据结构。
在Java编程语言中,数组和集合是两种基本的数据结构,它们用于存储和管理多个数据项。数组提供了一种固定大小的、连续内存空间的数据结构,而集合则更加灵活,可以根据需求动态地添加或删除元素。这里我们将深入探讨...
主要的集合类 * Collection集合接口 * List允许重复元素 * Set不允许重复元素 * Map键/值对 List/Set/Map的区别 * List类(元素有序,可重复) * AbstractCollection抽象类,实现大多数Collection接口中的方法 * ...
在 Java 中,集合类位于 `java.util` 包中,常用的集合类有 `ArrayList`、`LinkedList`、`HashSet`、`TreeSet` 等。 ArrayList `ArrayList` 是一个动态数组,可以根据需要自动调整大小。以下是 `ArrayList` 的一些...
### Java中的数组与集合 #### 数组(Array) 在Java中,数组是一种基本的数据结构,用于存储固定数量的同类型元素。这些元素可以是基本类型(如int、double等)或对象类型(即引用类型)。数组的特点包括: 1. **固定...
数组工具类(ArrayUtils)是Apache Commons Lang库中的一个实用工具类,它提供了许多方便的静态方法,扩展了Java内置的数组操作功能。这个类极大地简化了对数组的操作,包括初始化、添加、删除、查找和比较等。 1. ...
在Java编程语言中,数组是一种特殊的数据结构,用于存储同一类型的数据集合。在这个文档中,我们专注于一维数组的实例,主要探讨了如何创建、初始化和输出一维数组的元素。以下是详细的知识点解析: 1. **数组声明*...
在Java编程语言中,数组和集合类是两个重要的概念,它们在存储和管理数据时起着核心作用。数组提供了一种高效且结构化的数据存储方式,而集合类则提供了更灵活的数据组织和操作机制。 6.1 数组 数组是一种在内存中...
### 操作Java数组的常用工具类详解 在Java编程中,数组是一种常见的数据结构,用于存储固定大小的同类型元素集合。为了简化数组的操作并提高代码的效率与可读性,Java提供了`Arrays`类,这是一个包含了一系列静态...