查找存储在arraylist中的字符的索引值

发布于 2024-10-21 01:18:02 字数 496 浏览 3 评论 0原文

我有一个字符串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

请帮助我完成此操作。

I have a string arraylist. Need to get the index values of all elements if its value equals a specific character.

For eg need to get the index value of element if its value = "."

with indexOf() & lastIndexOf() i am able to find only the index value of 1st and last occurrence respectively.

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"

now i need to find the indices of "a"

my output should be like

0
2
5

please help me out in doing this.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

仅此而已 2024-10-28 01:18:03

简单明了。

int index=list.indexOf(vale);

现在返回找到的索引值;

It's simple and stringh forword .

int index=list.indexOf(vale);

Now returns found index value ;

嗼ふ静 2024-10-28 01:18:03

好吧...您可以轻松地使用循环线性地完成此操作:

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

///
我还没有尝试编译或运行上面的内容,但它应该会让你接近。
祝你好运。

well... you can easily do this linearly with a loop:

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

///
I haven't tried compiling or running the above, but it should get you close.
Good luck.

离线来电— 2024-10-28 01:18:03

使用 String.indexOf( mychar, fromIndex) 。

从 fromIndex 0 开始迭代,然后使用之前的结果作为 fromIndex,直到得到 -1。

Use String.indexOf( mychar, fromIndex).

Iterate starting with fromIndex 0, then use the previous result as your fromIndex until you get a -1.

夏の忆 2024-10-28 01:18:02
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);
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++;
}

prints

1
3
6
11

If you want to do the same over a list,

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++;
    }
}

will print

2
5
8

2

2
7

EDIT: Update after the author clarified his question

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);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文