当前位置: 首页 > news >正文

温州多语言网站建设长春推广公司

温州多语言网站建设,长春推广公司,广州公司注册在线,呼叫中心系统软件数组是一种有用的数据类型#xff0c;用于管理在连续内存位置中建模最好的集合元素。下面是如何有效地使用它们。-- Chris Hermansen#xff08;作者#xff09;有使用 C 或者 FORTRAN 语言编程经验的人会对数组的概念很熟悉。它们基本上是一个连续的内存块#xff0c;其中…数组是一种有用的数据类型用于管理在连续内存位置中建模最好的集合元素。下面是如何有效地使用它们。-- Chris Hermansen作者有使用 C 或者 FORTRAN 语言编程经验的人会对数组的概念很熟悉。它们基本上是一个连续的内存块其中每个位置都是某种数据类型整型、浮点型或者诸如此类的数据类型。Java 的情况与此类似但是有一些额外的问题。一个数组的示例让我们在 Java 中创建一个长度为 10 的整型数组int[] ia new int[10];上面的代码片段会发生什么从左到右依次是最左边的 int[] 将变量的类型声明为 int 数组由 [] 表示。它的右边是变量的名称当前为 ia。接下来 告诉我们左侧定义的变量赋值为右侧的内容。在 的右侧我们看到了 new它在 Java 中表示一个对象正在被初始化中这意味着已为其分配存储空间并调用了其构造函数请参见此处以获取更多信息。然后我们看到 int[10]它告诉我们正在初始化的这个对象是包含 10 个整型的数组。因为 Java 是强类型的所以变量 ia 的类型必须跟 右侧表达式的类型兼容。初始化示例数组让我们把这个简单的数组放在一段代码中并尝试运行一下。将以下内容保存到一个名为 Test1.java 的文件中使用 javac 编译使用 java 运行当然是在终端中import java.lang.*;public class Test1 {public static void main(String[] args) {int[] ia new int[10]; // 见下文注 1System.out.println(ia is ia.getClass()); // 见下文注 2for (int i 0; i ia.length; i) // 见下文注 3System.out.println(ia[ i ] ia[i]); // 见下文注 4}}让我们来看看最重要的部分。我们声明和初始化了长度为 10 的整型数组即 ia这显而易见。在下面的行中我们看到表达式 ia.getClass()。没错ia 是属于一个类的对象这行代码将告诉我们是哪个类。在紧接的下一行中我们看到了一个循环 for (int i 0; i ia.length; i)它定义了一个循环索引变量 i该变量遍历了从 0 到比 ia.length 小 1 的序列这个表达式告诉我们在数组 ia 中定义了多少个元素。接下来循环体打印出 ia 的每个元素的值。当这个程序编译和运行时它产生以下结果memydesktop:~/Java$ javac Test1.java memydesktop:~/Java$ java Test1 ia is class [I ia[0] 0 ia[1] 0 ia[2] 0 ia[3] 0 ia[4] 0 ia[5] 0 ia[6] 0 ia[7] 0 ia[8] 0 ia[9] 0 memydesktop:~/Java$ia.getClass() 的输出的字符串表示形式是 [I它是“整数数组”的简写。与 C 语言类似Java 数组以第 0 个元素开始扩展到第 数组大小 - 1 个元素。如上所见我们可以看到数组 ia 的每个元素都似乎由数组构造函数设置为零。所以就这些吗声明类型使用适当的初始化器就完成了吗?好吧并没有。在 Java 中有许多其它方法来初始化数组。为什么我要初始化一个数组有其它方式吗像所有好的问题一样这个问题的答案是“视情况而定”。在这种情况下答案取决于初始化后我们希望对数组做什么。在某些情况下数组自然会作为一种累加器出现。例如假设我们正在编程实现计算小型办公室中一组电话分机接收和拨打的电话数量。一共有 8 个分机编号为 1 到 8加上话务员的分机编号为 0。 因此我们可以声明两个数组int[] callsMade; int[] callsReceived;然后每当我们开始一个新的累计呼叫统计数据的周期时我们就将每个数组初始化为callsMade new int[9]; callsReceived new int[9];在每个累计通话统计数据的最后阶段我们可以打印出统计数据。粗略地说我们可能会看到import java.lang.*; import java.io.*;public class Test2 {public static void main(String[] args) {int[] callsMade;int[] callsReceived;// 初始化呼叫计数器callsMade new int[9];callsReceived new int[9];// 处理呼叫……// 分机拨打电话callsMade[ext]// 分机接听电话callsReceived[ext]// 汇总通话统计System.out.printf(%3s%25s%25sn, ext, calls made,calls received);for (int ext 0; ext callsMade.length; ext) {System.out.printf(%3d%25d%25dn, ext,callsMade[ext], callsReceived[ext]);}}}这会产生这样的输出memydesktop:~/Java$ javac Test2.java memydesktop:~/Java$ java Test2 ext calls made calls received0 0 01 0 02 0 03 0 04 0 05 0 06 0 07 0 08 0 0 memydesktop:~/Java$看来这一天呼叫中心不是很忙。在上面的累加器示例中我们看到由数组初始化程序设置的零起始值可以满足我们的需求。但是在其它情况下这个起始值可能不是正确的选择。例如在某些几何计算中我们可能需要将二维数组初始化为单位矩阵除沿主对角线———左上角到右下角——以外所有全是零。我们可以选择这样做double[][] m new double[3][3]; for (int d 0; d 3; d) {m[d][d] 1.0; }在这种情况下我们依靠数组初始化器 new double[3][3] 将数组设置为零然后使用循环将主对角线上的元素设置为 1。在这种简单情况下我们可以使用 Java 提供的快捷方式double[][] m {{1.0, 0.0, 0.0},{0.0, 1.0, 0.0},{0.0, 0.0, 1.0}};这种可视结构特别适用于这种应用程序在这种应用程序中它便于复查数组的实际布局。但是在这种情况下行数和列数只在运行时确定时我们可能会看到这样的东西:int nrc; // 一些代码确定行数和列数 nrc double[][] m new double[nrc][nrc]; for (int d 0; d nrc; d) {m[d][d] 1.0; }值得一提的是Java 中的二维数组实际上是数组的数组没有什么能阻止无畏的程序员让这些第二层数组中的每个数组的长度都不同。也就是说下面这样的事情是完全合法的int [][] differentLengthRows {{1, 2, 3, 4, 5},{6, 7, 8, 9},{10, 11, 12},{13, 14},{15}};在涉及不规则形状矩阵的各种线性代数应用中可以应用这种类型的结构有关更多信息请参见此 Wikipedia 文章。除此之外既然我们了解到二维数组实际上是数组的数组那么以下内容也就不足为奇了differentLengthRows.length可以告诉我们二维数组 differentLengthRows 的行数并且differentLengthRows[i].length告诉我们 differentLengthRows 第 i 行的列数。深入理解数组考虑到在运行时确定数组大小的想法我们看到数组在实例化之前仍需要我们知道该大小。但是如果在处理完所有数据之前我们不知道大小怎么办这是否意味着我们必须先处理一次以找出数组的大小然后再次处理这可能很难做到尤其是如果我们只有一次机会使用数据时。Java 集合框架很好地解决了这个问题。提供的其中一项是 ArrayList 类它类似于数组但可以动态扩展。为了演示 ArrayList 的工作原理让我们创建一个 ArrayList 对象并将其初始化为前 20 个斐波那契数字import java.lang.*; import java.util.*;public class Test3 {public static void main(String[] args) {ArrayListInteger fibos new ArrayListInteger();fibos.add(0);fibos.add(1);for (int i 2; i 20; i) {fibos.add(fibos.get(i - 1) fibos.get(i - 2));}for (int i 0; i fibos.size(); i) {System.out.println(fibonacci i fibos.get(i));}} }上面的代码中我们看到用于存储多个 Integer 的 ArrayList 的声明和实例化。使用 add() 附加到 ArrayList 实例。使用 get() 通过索引号检索元素。使用 size() 来确定 ArrayList 实例中已经有多少个元素。这里没有展示 put() 方法它的作用是将一个值放在给定的索引号上。该程序的输出为fibonacci 0 0 fibonacci 1 1 fibonacci 2 1 fibonacci 3 2 fibonacci 4 3 fibonacci 5 5 fibonacci 6 8 fibonacci 7 13 fibonacci 8 21 fibonacci 9 34 fibonacci 10 55 fibonacci 11 89 fibonacci 12 144 fibonacci 13 233 fibonacci 14 377 fibonacci 15 610 fibonacci 16 987 fibonacci 17 1597 fibonacci 18 2584 fibonacci 19 4181ArrayList 实例也可以通过其它方式初始化。例如可以给 ArrayList 构造器提供一个数组或者在编译过程中知道初始元素时也可以使用 List.of() 和 array.aslist() 方法。我发现自己并不经常使用这些方式因为我对 ArrayList 的主要用途是当我只想读取一次数据时。此外对于那些喜欢在加载数据后使用数组的人可以使用 ArrayList 的 toArray() 方法将其实例转换为数组或者在初始化 ArrayList 实例之后返回到当前数组本身。Java 集合框架提供了另一种类似数组的数据结构称为 Map映射。我所说的“类似数组”是指 Map 定义了一个对象集合它的值可以通过一个键来设置或检索但与数组或 ArrayList不同这个键不需要是整型数它可以是 String 或任何其它复杂对象。例如我们可以创建一个 Map其键为 String其值为 Integer 类型如下MapString, Integer stoi new MapString, Integer();然后我们可以对这个 Map 进行如下初始化stoi.set(one,1); stoi.set(two,2); stoi.set(three,3);等类似操作。稍后当我们想要知道 three 的数值时我们可以通过下面的方式将其检索出来stoi.get(three);在我的认知中Map 对于将第三方数据集中出现的字符串转换为我的数据集中的一致代码值非常有用。作为数据转换管道的一部分我经常会构建一个小型的独立程序用作在处理数据之前清理数据为此我几乎总是会使用一个或多个 Map。值得一提的是ArrayList 的 ArrayList 和 Map 的 Map 是很可能的有时也是合理的。例如假设我们在看树我们对按树种和年龄范围累计树的数目感兴趣。假设年龄范围定义是一组字符串值“young”、“mid”、“mature” 和 “old”物种是 “Douglas fir”、“western red cedar” 等字符串值那么我们可以将这个 Map 中的 Map 定义为MapString, MapString, Integer counter new MapString, MapString, Integer();这里需要注意的一件事是以上内容仅为 Map 的行创建存储。因此我们的累加代码可能类似于// 假设我们已经知道了物种和年龄范围 if (!counter.containsKey(species)) {counter.put(species,new MapString, Integer()); } if (!counter.get(species).containsKey(ageRange)) {counter.get(species).put(ageRange,0); }此时我们可以这样开始累加counter.get(species).put(ageRange, counter.get(species).get(ageRange) 1);最后值得一提的是Java 8 中的新特性Streams 还可以用来初始化数组、ArrayList 实例和 Map 实例。关于此特性的详细讨论可以在此处和此处中找到。
http://www.pierceye.com/news/615670/

相关文章:

  • 广州网站建设工作室招聘文创产品设计分析
  • 产品是做网站seo网站设计费用
  • 公司网站的搭建方案做海报图片的网站
  • 纯文本网站建设小米发布会最新
  • 定制版网站建设费用网站服务器干啥
  • 漂亮的网站是什么建设出来的弄一个小程序要多少钱
  • 房地产网站模板 下载免费空间和域名
  • 通付盾 建设网站公司最新永久地域自动跳转
  • 宁波建网站选哪家好一点wordpress手机全部显示
  • 如何注册属于自己的网站做列表的网站
  • 网站公司seo杭州网站建设模板
  • 网站内链如何布局优化大师下载
  • 如何做网站需求表格清单电影购买网站怎么设计
  • 有口碑的常州网站建设家政公司网站建设方案
  • 用户体验设计师吉林网站seo
  • 便宜营销型网站建设优化建站多网站绑定域名
  • 什么网站教人做3d效果图网站建设电话销售不被挂断
  • 村级网站建设 不断增强免费logo设计图案创意
  • 做网站优化有什么途径什么类型的公司需要做建设网站的
  • 计算机毕设代做网站深圳自适应网站开发
  • 万网主机建设网站流程idc 网站备案
  • 收费用的网站怎么做珠海网站关键词推广
  • 学技巧网站制作网站建设税率多少
  • 高端网站设计平台网页设计模板的网站
  • 万网云服务器网站上线网站开发开票税率
  • 西安高端网站制作公司网站开发需要哪些知识
  • 不错的网站建设公网站建设产品展示型的
  • 泰安住房和城乡建设局网站东莞网站推广哪家好信息
  • 个人网站制作的选题意义简短干净三字公司起名
  • 网站卡密代理怎么做网站建设有关表格