如何解决用作数组但在给定相同索引下的多个值时会自动增长为第二维的数据结构是什么?
我还记得这种基于索引的数据结构,如数组或列表。但是,如果在同一个索引下放置多个值,则该索引将变成一个链表。因此,在将新元素添加到同一索引后,链接列表将自动增长。
我认为它不仅是2D阵列。我也听说可以创建一系列链接列表,但是我仍然怀疑这是我感兴趣的内容。
我还假定这就像Java Collection中的某种数据结构,因为我记得在Java中看到一些包含这种结构的代码,但是忘记了它的名字。
有人能提出一些线索是什么吗? 还是这样的数据结构甚至存在? 谢谢
解决方法
您可以创建自己的数据结构来实现所需的确切行为。
一种方法是将HashMap
中的Integer
用作key
,将LinkedList
用作value
。
这里是一个例子:
public class IndexMap {
Map<Integer,LinkedList<Integer>> map;
public IndexMap(){
map = new HashMap<Integer,LinkedList<Integer>>();
}
public void add(int index,int value) {
if(map.containsKey(index)) {
map.get(index).add(value);
}else {
LinkedList<Integer> list = new LinkedList<>();
list.add(value);
map.put(index,list);
}
}
public void remove(int index,int value) {
if(map.containsKey(index))
map.get(index).remove(new Integer(value));
}
@Override
public String toString() {
return map.toString();
}
public static void main(String[] args) {
IndexMap map = new IndexMap();
map.add(0,0);
map.add(0,1);
map.add(1,0);
map.add(2,1);
System.out.println(map);
map.remove(0,1);
System.out.println(map);
}
}
示例演示:
{0=[0,1],1=[0],2=[0,1]}
{0=[0],1]}
您可以更改方法或添加新方法以实现更多功能。
,您可能正在考虑使用多图。虽然基本Java中没有实现,但google guava中有一个实现。
Here是有关如何在构建中使用它的介绍。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。