大家好,今天碰到一个需求,要用java数组实现。长话短说,需求如下:有三个数组如下,对于b和c数组其实我们不必关心其中的内容,比如a,b,c,d,e,f之类的,我们只用知道其实a数组是按照b的大格式去复制a数组中的值,而按照c数组的格式去分割每一个值的就可以了。String[] a = {"1","|","2"};String[] b = {"a","b","c","|","d","e"};String[] c = {"a","|","b","|","c","|","d","|","e"};
根据以上三个数组我们需要得到下面的一个目标数组:{"1","|","1","|","1","|","2","|","2"};请问各位应该如何实现呢。我写了一段现在又错误进行不下去了,有点晕。请赐教啊
根据以上三个数组我们需要得到下面的一个目标数组:{"1","|","1","|","1","|","2","|","2"};请问各位应该如何实现呢。我写了一段现在又错误进行不下去了,有点晕。请赐教啊
import java.util.Iterator;
import java.util.List;public class Sample {
public static void main(String[] args) {
List list = new ArrayList();
String[] a = { "1", "|", "2" };
String[] b = { "a", "b", "c", "|", "d", "e" };
String[] c = { "a", "|", "b", "|", "c", "|", "d", "|", "e" };
for (int i = 0; i < a.length; i++) {
list.add(a[i]);
}
for (int i = 0; i < b.length; i++) {
list.add(b[i]);
}
for (int i = 0; i < c.length; i++) {
list.add(c[i]);
}
Iterator it = list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
}
这是我写的程序,现在卡住了,不知道怎么继续下去,求赐教:
for(int i=0;i<a.length;i++)
{
if(!("|").equals(a[i]))
{
for(int j=0,int k=0;j<b.length,k<c.length;j++,k++)
{
if(!("|").equals(b[j]))
{
d.add(a[i]);
}else{
++j;
continue;
}
if(("|").equals(c[k]))
{
d.add("|");
}
}
}else{
++i;
continue;
}
}
{
String[] a = {"1","|","2"};
String[] b = {"a","b","c","|","d","e"};
String[] c = {"a","|","b","|","c","|","d","|","e"};
String regex =",|\\[|\\]|\\s";
String bStr=Arrays.toString(b);
bStr=bStr.replaceAll(regex, "");
String[] bKey = bStr.split("\\|");
String aStr=Arrays.toString(a);
aStr=aStr.replaceAll(regex, "");
String[] aValue = aStr.split("\\|");
Map<String,String> map = new HashMap<String,String>();
for(int i=0;i<bKey.length;i++){
String key = bKey[i];
String[] keyArray=key.split("(?<!^)(?=[a-z])");
for(String str:keyArray){
map.put(str,aValue[i]);
}
}
String[] temp = c.clone();
for(int j=0;j<temp.length;j++){
if(map.containsKey(temp[j])){
temp[j]=map.get(temp[j]);
}
}
System.out.println(Arrays.toString(temp));
}
{
String[] a = {"1","|","2"};
String[] b = {"a","b","c","|","d","e"};
String[] c = {"a","|","b","|","c","|","d","|","e"};
String regex =",|\\[|\\]|\\s";
String bStr=Arrays.toString(b);
bStr=bStr.replaceAll(regex, "");
String[] bKey = bStr.split("\\|");
String aStr=Arrays.toString(a);
aStr=aStr.replaceAll(regex, "");
String[] aValue = aStr.split("\\|");
Map<String,String> map = new HashMap<String,String>();
for(int i=0;i<bKey.length;i++){
String key = bKey[i];
String[] keyArray=key.split("(?<!^)(?=[a-z])");
for(String str:keyArray){
map.put(str,aValue[i]);
}
}
String[] temp = c.clone();
for(int j=0;j<temp.length;j++){
if(map.containsKey(temp[j])){
temp[j]=map.get(temp[j]);
}
}
System.out.println(Arrays.toString(temp));
}
int n = 0;
int n2 = 0;
for(int i = 0; i < b.length;i++) {
if(b[i].equals("|")) {
n += 2;
}
else {
b[i] = a[n];
}
}
for(int i = 0;i < b.length;i++) {
if(b[i].equals("|")) {
continue;
}
else {
c[n2] = b[i];
n2 += 2;
}
}
}运行测试String[] a = {"1","|","2"}; String[] b = {"a","b","c","|","d","e"}; String[] c = {"a","|","b","|","c","|","d","|","e"};
copy(a,b,c);
for(String cc:c)
System.out.print(cc);结果:1|1|1|2|2再测试 String[] a = {"1","|","2","|","3"}; String[] b = {"a","b","c","|","d","e","|","f","g","h"}; String[] c = {"a","|","b","|","c","|","d","|","e","|","f","|","g","|","h"};
copy(a,b,c);
for(String cc:c)
System.out.print(cc);结果:1|1|1|2|2|3|3|3
public static void main(String args[])
{
String[] a = {"1","|","2"};
String[] b = {"a","b","c","|","d","e"};
String[] c = {"a","|","b","|","c","|","d","|","e"};
String regex =",|\\[|\\]|\\s";
St……非常感谢。其实我想要的是利用三个数组操作的逻辑代码,比如多层嵌套的for循环就可以实现,不需要正则去判断和匹配,我的数组内容是无所谓的,主要是根据格式生成目标格式的数组格式。谢谢
copy(a,b,c);
for(String cc:c)
System.out.print(cc);结果:亚|亚|亚|灭|灭|碟|碟|碟|!
非常感谢,你的code让我找到了灵感,呵呵。
差不多就是这个意思,谢谢阿!!!