我有一个字符串arraylist
。如果所有元素的值等于特定字符,则需要获取所有元素的索引值。
例如,如果元素的值=“。”,则需要获取元素的索引值。
indexOf()
& lastIndexOf()
我只能找到第一次和最后一次出现的索引值。
ArrayList<String> als_data = new ArrayList<String>();
als_data[0] = "a"
als_data[1] = "b"
als_data[2] = "a"
als_data[3] = "c"
als_data[4] = "d"
als_data[5] = "a"
现在我需要找到"a"
我的输出应该像
0
2
5
请帮我解决这个问题。
答案 0 :(得分:9)
String string = "a.b.cc.dddd.ef";
int index = 0;
while((index = string.indexOf('.', index)) != -1) {
index = string.indexOf('.', index);
System.out.println(index);
index++;
}
打印
1
3
6
11
如果你想在列表上做同样的事,
List<String> list = new ArrayList<String>();
list.add("aa.bb.cc.dd");
list.add("aa.bb");
list.add("aa.bbcc.dd");
for (String str : list) {
printIndexes(str, '.');
System.out.println();
}
private void printIndexes(String string, char ch) {
int index = 0;
while((index = string.indexOf(ch, index)) != -1) {
index = string.indexOf(ch, index);
System.out.println(index);
index++;
}
}
将打印
2
5
8
2
2
7
编辑:在作者澄清问题后更新
List<String> list = new ArrayList<String>();
list.add("abcd");
list.add("pqrs");
list.add("abcd");
list.add("xyz");
list.add("lmn");
List<Integer> indices = new ArrayList<Integer>();
for (int i = 0; i < list.size(); i++) {
if("abcd".equals(list.get(i))) {
indices.add(i);
}
}
System.out.println(indices);
答案 1 :(得分:4)
这很简单,也很简单。
int index = list.indexOf(vale);
现在返回找到的索引值;
答案 2 :(得分:1)
嗯......你可以通过循环线性地做到这一点:
private int[] getIndexe(String searchFor,List<String> sourceArray) {
List<Integer> intArray = new ArrayList<Integer>();
int index = 0;
for(String val:sourceArray) {
if(val.equals(searchFor)) {
intArray.add(index);
}
index++;
}
return intArray.toArray(new int[intArray.size()]);
}
/// 我没有尝试编译或运行上面的内容,但它应该让你接近。 祝你好运。
答案 3 :(得分:0)
使用String.indexOf( mychar, fromIndex)
。
从fromIndex 0开始迭代,然后使用前面的结果作为fromIndex,直到得到-1。