我输入的内容如下:
0, 0, 0, 0, 1, 0, 2, A
0, 0, 3, 0, 1, 0, 2, A
0, 2, 0, 0, 1, 0, 2, B
0, 0, 0, 0, 1, 0, 2, A
将字母作为标签,然后将数字作为输入。
我希望将整个矩阵存储在一个数据结构中,以便对应于特定标签的输入可以与之相关联。
怎么做?
使用2d阵列?
使用数组列表?
的Hashmap?
答案 0 :(得分:2)
如果你想使用A, B,...
作为键,你可以使用带字符串作为键的HashMap和作为值的arraylist
Map<String, List<String>> map = new HashMap<String, List<String>>();
然后,您可以迭代输入并检查地图是否已包含密钥。
for (...) {
...
if (!map.containsKey(key)) {
map.put(key, new ArrayList<String>());
}
map.get(key).add(value);
}
这是一个通用示例,您可以根据自己的要求进行修改。
答案 1 :(得分:1)
您可以使用HashMap:
Map<char, String[][]> matrix = new HashMap<char, String[]>();
matrix.put('A', new String[][]{{0, 0, 0, 0, 1, 0, 2}, {0, 0, 3, 0, 1, 0, 2}, ...});
......
这样,许多数组可以与单个标签(或字符)相关联。
答案 2 :(得分:1)
HashMap不适合您的案例,因为任何属性都没有唯一性。创建一个具有2个属性的类:
Class Obj {
char[] array;
String label;
}
然后将这些对象的列表维护为ArrayList
答案 3 :(得分:1)
如果您需要int数组,只需替换以下代码:
import java.util.ArrayList;
class Group {
public String key;
public String value;
public String getKey() {
return key;
}
public String getValue() {
return value;
}
Group(String v, String k) {
this.key = k;
this.value = v;
}
@Override
public String toString() {
return this.key + " " + this.value;
}
}
public class Datastructure {
public static void main(String[] args) {
ArrayList<Group> list = new ArrayList<>();
list.add(new Group("0, 0, 0, 0, 1, 0, 2", "A"));
list.add(new Group("0, 0, 3, 0, 1, 0, 2", "A"));
list.add(new Group("0, 2, 0, 0, 1, 0, 2", "B"));
list.add(new Group("0, 0, 0, 0, 1, 0, 2", "A"));
findKeyList(list, "A");
}
public static void findKeyList(ArrayList<Group> list, String search) {
if (!list.isEmpty()) {
for (Group element : list) {
if (element.getKey().equals(search)) {
System.out.println(element.toString());
}
}
}
}
}