基本上我需要按照特定的顺序将字符串从一个arraylist添加到另一个arraylist。 第一个项目包含收藏夹,然后是第一个收藏夹,然后是第二个。
我一直尝试通过添加第一组(没有问题),然后添加带条件的第二组:originalList [i] .contains(favorite1)&&!secondList.contains(originalListNames) [I])
但我一直在重复。然后我尝试了下面的代码,我仍然得到重复。它们以正确的顺序添加,并且应该添加所有应该添加的内容。但是他们真的不应该重复,但是他们确实......在这里有什么帮助我到底搞砸了什么?
ArrayList<String> dataSource = new ArrayList<>();
for (int i=0; i < names.length; i++) {
if (categories[i].toLowerCase().contains(favorite1)) {
if (categories[i].toLowerCase().contains(favorite2)) {
dataSource.add(names[i] + "," + dates[i] + "," + descriptions[i] + "," + categories[i] + "," + imgurl[i]);
}
}
}
for (int i=0; i < names.length; i++) {
if (categories[i].toLowerCase().contains(favorite1)) {
if (dataSource.contains(names[i])) {
}
else{
dataSource.add(names[i] + "," + dates[i] + "," + descriptions[i] + "," + categories[i] + "," + imgurl[i]);
}
}
}
请注意,dataSource是目标,名称,日期,描述等是包含所有对应于同一索引的字符串的数组。 (即,名称[i],日期[i]等都包含相同的内容
答案 0 :(得分:0)
所以终于明白了....感谢你的帮助。在我的java上有点生锈,但是最终的结果(尽管它可能是非优化的......):
for (int i=0; i < names.length; i++) {
if (categories[i].toLowerCase().contains(favorite1)) {
boolean found=false;
for (int j=0; j < dataSource.size(); j++){
if (dataSource.get(j).toString().indexOf(names[i]) >= 0) {
found = true;
}
}
if (!found){
dataSource.add(names[i] + "," + dates[i] + "," + descriptions[i] + "," + categories[i] + "," + imgurl[i]);
}
}
}