給定的
public Object[] suite = {"diamonds","hearts","clubs","spades"};
public Object[] rank = {"J","Q","K","A"};
我如何以編程方式實作:
Object[][] card = {{"J","diamonds"},{"Q","diamonds"},{"K","diamonds"},{"A","diamonds}
,{"J","hearts"}, {"Q","hearts"}, {"K","hearts"}, {"A","hearts"}
,{"J","clubs"}, {"Q","clubs"}, {"K","clubs"}, {"A","clubs"}
,{"J","spades"}, {"Q","spades"}, {"K","spades"}, {"A","spades"}
};
和
public Object[][] someMagic( Object[] suite, Object[] rank) {
Object[][] retVal = new Object[suite.length][rank.length]
// insert magic here
return retVal;
}
是的,由于上游限制,一切都需要是 Object、Object[] 或 Object[][]。測驗NG@DataProvider。
uj5u.com熱心網友回復:
幾個嵌套回圈可以發揮作用,但它們的尺寸retVal不同:
public Object[][] someMagic(Object[] suite, Object[] rank) {
Object[][] retVal = new Object[suite.length * rank.length][];
int i = 0;
for (Object s : suite) {
for (Object r : rank) {
retVal[i ] = new Object[]{ r, s };
}
}
return retVal;
}
測驗:
Object[] suite = {"diamonds","hearts","clubs","spades"};
Object[] rank = {"J","Q","K","A"};
System.out.println(Arrays.deepToString(someMagic(suite, rank)));
輸出(不漂亮印刷):
[[J, 鉆石], [Q, 鉆石], [K, 鉆石], [A, 鉆石], [J, 心], [Q, 心], [K, 心], [A, 心], [ J,俱樂部],[Q,俱樂部],[K,俱樂部],[A,俱樂部],[J,黑桃],[Q,黑桃],[K,黑桃],[A,黑桃]]
但是,可以使用 Stream API 施放較短的咒語Stream::flatMap,尤其是:
public static Object[][] someMagic(Object[] suite, Object[] rank) {
return Arrays.stream(suite)
.flatMap(s -> Arrays.stream(rank).map(r -> new Object[]{ r, s }))
.toArray(Object[][]::new);
}
uj5u.com熱心網友回復:
也許這是解決方案
public class SomeMagic {
public Object[] suite = {"diamonds","hearts","clubs","spades"};
public Object[] rank = {"J","Q","K","A"};
public Object[][] someMagic( Object[] suite, Object[] rank) {
Object[][] retVal = new Object[suite.length][rank.length];
for(int s = 0; s < suite.length; s ) {
for(int r = 0; r < rank.length; r ) {
System.out.println("s: " s ", r: " r ", card[s][r]: " suite[s] ", " rank[r]);
retVal[s][r] = new Object[] {suite[s], rank[r]};
}
}
return retVal;
} // someMagic
public void doIt() {
Object[][] card = someMagic(suite, rank);
for(int s = 0; s < card.length; s ) {
System.out.println("s: " s "-----------------------------");
for(int r = 0; r < card[s].length; r ) {
Object[] item = (Object[]) card[s][r];
System.out.println("s: " s ", r: " r ", card[s][r]: " item[0] ", " item[1]);
}
}
} // doIt
public static void main(String[] args) {
SomeMagic self = new SomeMagic();
self.doIt();
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/397337.html
下一篇:限制惰性列中的專案
