如何使用 indexOf 在 ArrayList<StringBuilder> 中搜索数据

How search a datum in ArrayList<StringBuilder> with indexOf

如何使用 indexOf 在 ArrayList 中搜索数据

ArrayList<StringBuilder> state = new ArrayList<StringBuilder>();
state.add(new StringBuilder("A"));
state.add(new StringBuilder("B"));
state.add(new StringBuilder("C"));
state.add(new StringBuilder("D"));
System.out.println(state.indexOf(new StringBuilder("B"))); //Out: -1

这是因为它按引用搜索,而您想按字符串生成器的内容进行搜索。

boolean there = state.stream() // use streams API
                     .anyMatch(sb -> sb.toString().equals("B")); // check string equals

System.out.println(there); // print if it's there

您正在使用 ArrayListStringBuilder 个对象。

由于 StringBuilder 用于构建字符串,而不是实际 Strings ,您不能使用 indexOf(s),因为整个对象本身应该等于一个您正在比较 returns true.

为了解决这个问题,你应该用StringBuilder构建你想要的String,并只创建一个已经构建的String的ArrayList,就像这样:

ArrayList<String> state = new ArrayList<String>();
StringBuilder a = new StringBuilder("A")
//Do whatever you want to a
state.add(a.toString());
state.add(b.toString());
state.add(c.toString());
state.add(d.toString());
.....
System.out.println(state.indexOf("B")); //Out: 1