Java 是否存在同时具有ArrayList和Map-like属性的数据结构?
我有一系列的数据,每一个其他值都与它前面的值配对 2356889125Java 是否存在同时具有ArrayList和Map-like属性的数据结构?,java,arrays,map,arraylist,multidimensional-array,Java,Arrays,Map,Arraylist,Multidimensional Array,我有一系列的数据,每一个其他值都与它前面的值配对 2356889125 例如,其中2将用3写出,5将用6写出(作为指数,但这并不真正相关) 我不确定行中会有多少个值,所以我想使用ArrayList,但我需要链接它们。我希望2以2D数组的样式与3关联 我不能使用地图,因为它们的键可能会在整个地方重复,所以键/值关联不会有任何独特的特征。我只需要一个可扩展的2D数组,我不确定我能从HashMap、ArrayList、2D数组或我知道的任何其他数据结构中得到它 有什么建议吗 编辑: 为了澄清,这将代表
例如,其中2将用3写出,5将用6写出(作为指数,但这并不真正相关) 我不确定行中会有多少个值,所以我想使用ArrayList,但我需要链接它们。我希望2以2D数组的样式与3关联 我不能使用地图,因为它们的键可能会在整个地方重复,所以键/值关联不会有任何独特的特征。我只需要一个可扩展的2D数组,我不确定我能从HashMap、ArrayList、2D数组或我知道的任何其他数据结构中得到它 有什么建议吗 编辑:
为了澄清,这将代表2^3 5^6 8^9等,我希望最终以可读的形式打印它,并且我还需要按最高指数值排序。因此,我需要对它们进入数据结构的顺序进行一些控制。为什么不创建一个类来将这两个数字放在一起呢?然后,您可以使用
列表
保存所有数据
public class Pair {
private final int a;
private final int b;
public Pair(int a, int b) {
this.a = a;
this.b = b;
}
public int getA() {
return a;
}
public int getB() {
return b;
}
}
/e
由于您需要排序,您可以使
结对
实现,或者创建一个用于组织数据的类。为什么不创建一个类将两个数字放在一起呢?然后,您可以使用列表
保存所有数据
public class Pair {
private final int a;
private final int b;
public Pair(int a, int b) {
this.a = a;
this.b = b;
}
public int getA() {
return a;
}
public int getB() {
return b;
}
}
/e
因为您需要排序,所以您可以使
结对
实现,或者创建一个用于组织数据的数组。构造一个数组列表
,其中每个整数[]
的长度为2。ArrayList
是可扩展的,允许使用.get(index1)[index2]
访问一对元素 构造一个ArrayList
,其中每个整数[]
的长度为2。ArrayList
是可扩展的,允许使用.get(index1)[index2]
访问一对元素 如果顺序不重要,您可以有一个列表映射,其中映射键是基础,列表中的每个项目都是基础提升到的指数之一
public class Pair {
private final int a;
private final int b;
public Pair(int a, int b) {
this.a = a;
this.b = b;
}
public int getA() {
return a;
}
public int getB() {
return b;
}
}
例如,如果您的线条看起来像:
1 2 1 3 2 4 2 5 3 6
地图看起来像:
{ 1 -> [2, 3], 2 -> [4, 5], 3 -> [6] }
如果顺序不重要,您可以有一个列表映射,其中映射键是基础,列表中的每个项目都是基础提升到的指数之一 例如,如果您的线条看起来像:
1 2 1 3 2 4 2 5 3 6
地图看起来像:
{ 1 -> [2, 3], 2 -> [4, 5], 3 -> [6] }
你期望代表的最高指数是什么?所有指数都是整数吗?是的,所有指数都是整数,我想它可能会非常高,但我不会假设超过20个。你能用一个21个数字的数组,每个指数一个数字吗?未使用的指数在该数组中为零,因此您不会打印它们。保持对的顺序很重要吗?您希望表示的最高指数是多少?所有指数都是整数吗?是的,所有指数都是整数,我想它可能会非常高,但我不会假设超过20个。你能用一个21个数字的数组,每个指数一个数字吗?未使用的指数在该数组中为零,因此您不会打印它们。维护对的顺序是否重要?我是在评论comparator,您添加了xD+1i是在评论comparator,您添加了xD+1C,然后您可以按Integer[]中的两个值之一对ArrayList进行排序吗?是;使用
Collections.sort
(如@Jeffrey所述)<代码>集合.sort(yourArrayList,new Comparator(){public int compare(Integer[]a,Integer[]b){返回a[indOfExponent]-b[indOfExponent];//或b[indOfExponent]-a[indOfExponent]})代码>编辑:请原谅格式错误;将c+p代码输入编辑器。然后,能否按整数[]内的两个值之一对ArrayList进行排序?是;使用Collections.sort
(如@Jeffrey所述)<代码>集合.sort(yourArrayList,new Comparator(){public int compare(Integer[]a,Integer[]b){返回a[indOfExponent]-b[indOfExponent];//或b[indOfExponent]-a[indOfExponent]})代码>编辑:请原谅格式错误;将c+p代码导入编辑器。