我正在编写一个处理信号数组的java程序。
通过将midi文件转换为midi-text文件来获取此数组:
Signal [] sig= {"a1a2a3", "b1b2b3", "c1c2c3", "d1d2d3"};
Signal [] sig1 = {"a1", "b1", "c1", "d1"};
Signal [] sig2 = {"a2", "b2", "c2", "d2"};
Signal [] sig3 = {"a3", "b3", "c3", "d3"};
如何实现?
答案 0 :(得分:2)
您知道 MultiMap 吗?
我认为您可以在创建原始数组时实现多重映射。
通过:http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/Multimap.html
简单的解决方案就是这样:
如果数组类似
Signal [] sig= {a1a2a3, b1b2b3, c1c2c3, d1d2d3};
for(int i = 0;i<sig.size();i++){
for(int j = 0;j<sig[i].length() ;j++){
newArray.add(sig.subString(j,j+1));
}
}
你可以通过这样的字符串操作来完成。可以吗?
答案 1 :(得分:1)
ArrayList<Signal[]> list = new ArrayList<Signa[]>();
for(Signal s : sig)
list.add(s.split());
int X = list.get(0).size();
int Y = sig.length()
Signal[][] sigs = new Signal[X][Y];
for(int i=0; i<X; i++)
for(int j=0; j<Y; j++)
sigs[i][j] = list(i)[j];
Signal[] sig1 = sigs[0];
...
您需要将分割方法添加到Signal
类:
class Signal {
....
public Signal[] split() {
// split signals
}
}