Найти значение индекса символа, хранящегося в arraylist - PullRequest
2 голосов
/ 08 марта 2011

У меня есть строка arraylist.Необходимо получить значения индекса всех элементов, если его значение равно определенному символу.

Например, необходимо получить значение индекса элемента, если его значение = "."

с indexOf()& lastIndexOf() я могу найти только значение индекса 1-го и последнего вхождения соответственно.

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

, пожалуйста, помогите мне в этом.

Ответы [ 4 ]

9 голосов
/ 08 марта 2011
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);
4 голосов
/ 31 мая 2013

Это простое и строгое слово.

int index = list.indexOf (vale);

Теперь возвращает найденное значение индекса;

1 голос
/ 08 марта 2011

хорошо ... вы можете легко сделать это линейно с помощью цикла:

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()]);
}

/// Я не пробовал компилировать или запускать вышеописанное, но это должно приблизить вас.Удачи.

0 голосов
/ 08 марта 2011

Используйте String.indexOf( mychar, fromIndex).

Повторяйте, начиная с fromIndex 0, затем используйте предыдущий результат в качестве fromIndex, пока не получите -1. ​​

...