如何在android中的不同ArrayList中存储不同的值

时间:2017-06-08 10:54:51

标签: java android string arraylist

我正在处理字符串值,如字符串结果"aa,bb,cc,dd,ee"

已经将其分成aa bb cc dd ee

qrList = result.getContents().toString().split("\\,");
List<String> resultToString= new ArrayList(Arrays.asList(qrList));

然后我创建了四个ArrayLists。

 ArrayList<String> strA = new ArrayList();
 ArrayList<String> strB = new ArrayList();
 ArrayList<String> strCD = new ArrayList();
 ArrayList<String> strE = new ArrayList();

当我使用下面的代码将字符串存储到每个新ArrayList时。

for(int count=0; count<resultToString.size(); count++){
    //separate string to array list
    if(count%5==0){
        strA.add(resultToString.get(count));
    }else if(count%5==1){
        strB.add(resultToString.get(count));
    }else if(count%5==2||count%5==3){
        strCD.add(resultToString.get(count));
    }else if(count==4){
        strE.add(resultToString.get(count));
    }

正确的结果是

  • strA存储aa
  • strB stored bb
  • strCD存储了cc和dd
  • strE stored ee

它不起作用,因为我只获得0的索引值(strA存储了aa)。 我该怎么做才能改进我的代码?

2 个答案:

答案 0 :(得分:2)

只需使用startsWith并添加适当的值列表

即可
    for(int count=0; count<resultToString.size(); count++){
        //separate string to array list
        String s = resultToString.get(count);

        if(s.startsWith("a")){
            strA.add(s);
        }else if(s.startsWith("b")){
            strB.add(s);
        }else if(s.startsWith("c")||s.startsWith("d")){
            strCD.add(s);
        }else if(s.startsWith("e")){
            strE.add(s);
        }
    }

答案 1 :(得分:0)

模数运算符描述了等式的其余部分。让我们展示并解释一个例子:

正如in this documentation所解释的那样,在两个值之间执行模数只会显示余数值。对于例如8 % 3 == 2因为8除以3会剩下2。

您的代码未显示所需结果的原因是由于使用了模数运算符。关于改进你的代码,我可以告诉你想要的只是使用数组列表索引,以便从resultToString添加字符串 数组列表。

因此我会按以下方式修改你的循环:

for(int count=0; count < resultToString.size(); count++) {
  //separate string to array list
  if (count == 0){
     strA.add(resultToString.get(count));
  } else if (count == 1){
     strB.add(resultToString.get(count));
  } else if (count == 2 || count == 3){
     strCD.add(resultToString.get(count));
  } else if (count == 4){
     strE.add(resultToString.get(count));
  }
}

另一种方法是直接在结果String[]上循环,并在for循环中使用该相对计数器,例如。

String[] qrList = results.getContent().toString().split("\\,");

for(int count = 0; count < qrList.length; count++) {
  //each index represents the split string e.g
  // [0] == "aa"
  // [1] == "bb"
  // [2] == "cc"
  // [3] == "dd"
  // [4] == "ee"
  if (count == 0){
     strA.add(qrList[count]);
  } else if (count == 1){
     strB.add(qrList[count]);
  } else if (count == 2 || count == 3){
     strCD.add(qrList[count]);
  } else if (count == 4){
     strE.add(qrList[count]);
  }
}