我需要在Java中创建一个power表。这将被存储。我发现没办法轻易做到这一点,因为Map
只有2个条目。是否有捷径可寻?我需要做的是有一个表(不在GUI上),如下所示:
Base Power BaseToPower
1 1 1
5 2 25
等等。我该怎么做?
答案 0 :(得分:4)
使用Map<int,Map<int,int>>
:)第一张地图的基础值,第二张地图的权力和基础值的关键
修改
我认为Map<Integer,Integer[][]>
是更好的解决方案
用于放置行
Map<Integer,Integer[][]> mainMap = new HashMap<Integer,Integer[][]>();
Integer[][] row1 = new Integer[1][2];//first base and power
row1[0][0] = 1;
row1[0][1] = 1;
Integer[][] row2 = new Integer[1][2];//second base and power
row2[0][0] = 2;
row2[0][1] = 5;
mainMap.put(1,row1);
mainMap.put(25,row2);
用于撤销值
for (Map.Entry<Integer, Integer[][]> entry : mainMap.entrySet()) {
System.out.println("Base= " + entry.getKey()
+ ", Power= " + entry.getValue()[0][0]
+ ", BaseToPower= " + entry.getValue()[0][1]);
}
//mainMap.get(25); will return base and power array
如果有错误,我没有对错误进行测试
答案 1 :(得分:1)
Java中表结构的常见实现是使用List
Maps
,因此每行中的Map键是列标题,如下所示:
List<Map<String,Integer>> table = new ArrayList<>();
Map<String,Integer> row1 = new HashMap<>();
row1.put("Base",1);
row1.put("Power",1);
row1.put("BaseToPower",1);
table.add(row1);
等
然而,更好的解决方案可能是创建一个bean类来表示一个表行。
public class TableRow {
private int base;
private int power;
private int baseToPower;
... Getters and Setters ...
}
然后,您可以将这些TableRow对象存储在List<TableRow>
或LinkedHashMap<Integer,TableRow>
中,具体取决于您希望如何访问它们。
答案 2 :(得分:0)
如果您只想查找功能的基础值,可以使用Math.pow(base, power)
然后将其转换为int
;它可能足够快。或者,如果要紧凑地存储值,可以使用int[][3]
。
答案 3 :(得分:0)
如果您总是拥有固定长度的权限,我会使用Map<int, Map<int, int>
或Map<int, Vector<int>>
之类的东西,因为使用嵌套地图,您必须手动输入权力;)
答案 4 :(得分:-1)
Power Table in Java
import java.util.*;
class powerseries
{
public static void main(String[] ar)
{
Scanner o=new Scanner(System.in);
int num,i,temp=1,temp2=1;
System.out.print("\nEnter Table number for powerseries: ");
num=o.nextInt();
for(i=1;i<=10;i++)
{
System.out.println(num+" ^ "+i+" = "+(temp2*num));
temp2=temp2*num; /*multiply coming number*/
}
}
}