我需要用 Java 制作一个权力表。这将被存储。我发现没有办法轻松做到这一点,因为Map
只有 2 个条目。是否有捷径可寻?我需要做的是有一个表(不在 GUI 上),如下所示:
Base Power BaseToPower
1 1 1
5 2 25
等等。我该怎么做?
使用 a Map<int,Map<int,int>>
:) 第一张地图的键作为基值,第二张地图的键作为功率和值作为 basetopower
编辑
我认为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
如果有错误,我没有测试它抱歉
Java 中 Table 结构的一个常见实现是使用 a List
of ,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 对象存储在 a 中,List<TableRow>
或者可能LinkedHashMap<Integer,TableRow>
取决于您希望如何访问它们。
如果您只想找到可以使用的幂的基值,Math.pow(base, power)
然后将其转换为int
; 它可能已经足够快了。或者,如果您想紧凑地存储值,您可以使用int[][3]
.
如果你总是有固定长度的权力,我会使用Map<int, Map<int, int>
或类似的东西Map<int, Vector<int>>
,因为使用嵌套地图,你必须手动输入权力;)
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*/
}
}
}