Java-创建Object类型的数组是不好的做法

时间:2015-11-15 02:02:28

标签: java arrays

我是Comp-Sci学生。我正在进行一项任务,我必须在其中创建一个具有" Key"(Type String)和" Value"(Type Object)属性的Table类。有点像迷你数据库。如果我使用" Key"作为参数,它将返回"值"属性。

我想到我应该使用一个Object类型的多维数组,其中一行的第一个元素是" Key"第二个元素是"价值"。

我想知道这是不好的做法/或者是否有一种明显且更方便的方法来解决这个问题。

由于散列图被禁止,我决定做什么: 我制作了两个独立的ArrayLists。一个将存储密钥,另一个将存储值。他们的索引会对应。因此,传入getMethod的Key的索引将返回Key ArrayList的值,因为它们对应于Key的索引。

感谢所有回答的人。我的帐户相当新,所以我还没有很多权限,比如投票。这是一个非常好的预览,说明这个社区可能有多棒。

3 个答案:

答案 0 :(得分:1)

原则上使用ArrayList作为类的私有内部工作的一部分,如果这是最方便的数据类型,则没有错。

许多容器类,例如SparseArray和android&#39; HashMap<String, Object>,都是这样做的。

在你的情况下,它听起来像一个更方便的类型是HashMap,因为它允许非常快速的基本操作。

如果不允许使用{{1}},最好查看哈希表的工作原理并考虑自己实现这样的结构。

答案 1 :(得分:0)

您可以使用泛型,类似于Map接口的工作方式。由于这是为了学校,我想你的教授希望你自己实现它。但是这里有一个可能的解决方案可能是什么样子,以及一个测试它的示例主要方法。

iLBItem

答案 2 :(得分:0)

实现此目的的最佳方法是创建一个单独的KeyValue类:

public class KeyValue {
private String key;
private String value;

public KeyValue(String key, String phoneNumber) {
    this.key = key;
    this.value = phoneNumber;
}

public String getKey() {
    return key;
}

public String getValue() {
    return value;
}

public static KeyValue keyvalue(String key, String value) {
    return new KeyValue(key, value);
}

}

在Main类中,使用以下代码:

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    private static Scanner scanner=new Scanner(System.in);
    private static ArrayList<KeyValue> newkeyValue=new ArrayList<KeyValue>();


    public static void main(String[] args) {
        addValue();
        printKeyValue();
    }


    // Line 24 uses factory static method to create object newVariable (Instance of KeyValue) 
    public static void addValue(){
        System.out.println("Enter the Key: ");
        String x=scanner.nextLine();
        System.out.println("Enter the Value: ");
        String valOfString=scanner.nextLine();
        KeyValue newVariable=KeyValue.keyvalue(valOfString,x);
        newkeyValue.add(newVariable);
    }



    public static void printKeyValue() {
        System.out.println("Key & Value");
        for(int i=0; i<newkeyValue.size(); i++) {
            System.out.println((i+1) + "." +
                    newkeyValue.get(i).getKey() + " -> " +
                    newkeyValue.get(i).getValue());
        }

    }
}