【问题标题】:Which data structure will be suitable for storing three related values? And how to implement?哪种数据结构适合存储三个相关值?以及如何实施?
【发布时间】:2013-10-24 05:43:35
【问题描述】:

我有

[0][11011] = 0.7; 
[32][11101] = 0.3

第一个值是整数位置,第二个是唯一字符 id,第三个是这个结构本身的值。 哪种数据结构适合存储三个值?


假设我有set1:

[0][11111] = 0.5; 
[16][11110] = 0.5; 
[32][11011] = 0.5; 
[48][10111] = 0.5; 

And I have set2 
[0][11011] = 0.7; 
[1][11101] = 0.3

我想从 set2 中获取字符串值 11011 在 set1 中搜索,如果它匹配例如位置 32,则分配给该结构值 0.7 而不是 0.5。 所以我需要知道哪种数据结构对此有用。以及如何实施?

【问题讨论】:

  • 检查this page from the Java tutorials 以获得示例实现。
  • 这个合集有什么要求?
  • 第一个值是整数值索引。就像在数组中。第二个值是唯一的字符串 id。最后是数值。我将有两个类似的结构。稍后我想获取字符串 id 并在数组中搜索,它看起来像这种格式 [int][11111] 所以如果字符串模式匹配,我想为该数组分配某个值。
  • 那么在检索您将使用的值时?索引还是字符串?还是两者兼而有之?
  • 我编辑了我的问题并添加了示例。我将在另一个 set2 中用作查询的字符串值。如果该字符串将与 set2 中的另一个字符串匹配,那么我从我检索的当前集合中为该 set2 实例分配值。

标签: java arrays data-structures


【解决方案1】:

在java中很容易将这三个值包装在一个对象中。

例如:

public class TestObject {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    private int id;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

}

这里有一个 TestObject 类型的对象,它包含两个值(两个 primitive 类型 intString - 您可以以完全相同的方式包装任何类型的对象)。 一旦 Object 为 initialized(instantiated),您就可以设置和获取这些值。

TestObject obj = new TestObject();
obj.setId(1);
obj.setName("George");

取回价值:

String name= obj.getName();
int id=obj.getId();

在您的情况下,您可以在这样的对象 (POJO) 中包含三个值,然后您可以在 Collection 中包含很多这些对象。 一个简单有效的集合类型 IMO 是 ArrayList,尽管这不是限制性的。

您可以像这样在ArrayList 中添加对象:

java.util.ArrayList<TestObject> list = new ArrayList<TestObject>();
list.add(obj);

您可以通过这样循环从列表中检索对象:

for(TestObject x:list){
  int id=x.getId();
  String name=x.getName();
}

【讨论】:

    猜你喜欢
    • 2010-12-29
    • 2013-07-24
    • 2016-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多