如何分解Java数组?

时间:2014-05-07 05:01:03

标签: java arrays

我正在编写一个处理信号数组的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"};

如何实现?

2 个答案:

答案 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
  }
}