我想按如下方式创建列表:
如上所述 list-item ,如果项目的名称在下一行中相同,那么它将添加后缀1
。
像这样 做到了这一点 enter image description here
答案 0 :(得分:1)
好的,所以你想问一下如何实现它。我能想到的最简单的解决方案是使用bool nextStep = true;
for (int x = 0; x < width && nextStep; x++) {
for (int y = 0; y < height && nextStep; y++) {
nextStep = IsBreakConditionFalse(x, y);
}
}
来跟踪项目名称。您的代码看起来有点像这样:
Map<String, Int>
显示列表项名称时,您将执行以下操作:
final Map<String, Integer> listNameMap = new HashMap<String, Integer>();
答案 1 :(得分:1)
我已尝试过样本数据,以下解决方案对我有用。但也可以提供更高效的解决方案。该解决方案不需要订购数据。
List<String> parent =new ArrayList<String>();
parent.add("R");
parent.add("I");
parent.add("S");
parent.add("R");
parent.add("I");
parent.add("S");
parent.add("R");
parent.add("I");
parent.add("S");
parent.add("R");
parent.add("R");
parent.add("I");
HashSet<String> set = new HashSet<>(parent);
ArrayList<String> valuesList = new ArrayList<>();
valuesList .addAll(set);
Log.d("ValueListWithoutDuplicates",valuesList.size()+"");
int counter = 0;
for(int i=0;i<valuesList.size();i++){
for(int j=0;j<parent.size();j++){
if(valuesList.get(i).equals(parent.get(j))){
if(counter==0){
counter++;
}else {
parent.set(j,parent.get(j)+String.valueOf(counter));
counter++;
}
}
}
counter=0;
}
for(int i=0;i<parent.size();i++){
Log.d("final value",parent.get(i)+"");
}