首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与其他misc一起返回一个完全分配的对数组。Java中的信息

与其他misc一起返回一个完全分配的对数组。Java中的信息
EN

Stack Overflow用户
提问于 2013-08-24 15:48:30
回答 1查看 49关注 0票数 0

我必须编写一个方法,遍历散布在机器上并需要返回以下内容的庞大对象的内容:

  • 在对象的结构中启动索引(例如:如果它有10个块/块,我可以返回片段/块3-7)
  • 第一部分内的偏移量
  • pair < id of each piece, size of each piece >的列表/数组(非映射- I've been clearly told not to use Map or Map.Entry)

引用确切的话,我必须返回fully-allocated array corresponding to the block range

Thought #1:起始索引和偏移量将返回一次,这是创建一个类的选项

  • 索引
  • 偏移
  • id
  • 大小

返回一个数组将提供多余的信息,每个条目增加8个字节,这是对内存的巨大浪费。

Thought #2:我可以用(id和size)创建一个数据类,并返回另一个类,其中包含这个较小的类+ index &偏移量的数组,但是在这种情况下,我的数据类的存在将仅仅包含一些似乎不谨慎的值。

Thought #3:我多次听说人们在需要返回对时使用数组。我不知道怎么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-24 16:09:55

基本上,你必须创建一个数据结构。在Java中有一种方法可以做到这一点:使用类。

您的第一个想法是错误的:您必须返回一个索引、一个偏移量和多对。因此,将所有字段放在一个类中是错误的,因为字段的基数是不一样的。特别是,如果有0对回来,你会非常尴尬。

你的第二次思考正好映射到你必须返回的内容。但是,我将使用集合(列表或集合)而不是数组:

代码语言:javascript
复制
public class Result {
    private int index;
    private int offset;
    private Set<Piece> pieces;

    ...
}

public class Piece {
    private String id;
    private int size;

    ...
}

为什么要使用集合而不是Piece[]数组:因为在遍历之前很有可能不知道碎片的数量。因为一个列表或集合有许多数组没有的有用方法。因为Set<Piece>清楚地指出没有重复的元素,这不是一个片段数组的情况。

第三个想法是使用一个包含2个元素的Object[] (或者一个包含两个元素的int[],例如,ID和大小都是int类型)来保存关于一个片段的信息。但这是丑陋和不可读的:数组包含的内容、顺序以及它们的类型都不明显。你不能添加任何有用的方法,就像你可以用一个片段类。

Java是一种面向对象语言。使用类和对象。使用封装。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18420330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档