我是Comp-Sci学生。我正在进行一项任务,我必须在其中创建一个具有" Key"(Type String)和" Value"(Type Object)属性的Table类。有点像迷你数据库。如果我使用" Key"作为参数,它将返回"值"属性。
我想到我应该使用一个Object类型的多维数组,其中一行的第一个元素是" Key"第二个元素是"价值"。
我想知道这是不好的做法/或者是否有一种明显且更方便的方法来解决这个问题。
由于散列图被禁止,我决定做什么: 我制作了两个独立的ArrayLists。一个将存储密钥,另一个将存储值。他们的索引会对应。因此,传入getMethod的Key的索引将返回Key ArrayList的值,因为它们对应于Key的索引。
感谢所有回答的人。我的帐户相当新,所以我还没有很多权限,比如投票。这是一个非常好的预览,说明这个社区可能有多棒。
答案 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());
}
}
}