如何使用 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
您正在使用 ArrayList
个 StringBuilder
个对象。
由于 StringBuilder
用于构建字符串,而不是实际 String
s ,您不能使用 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
如何使用 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
您正在使用 ArrayList
个 StringBuilder
个对象。
由于 StringBuilder
用于构建字符串,而不是实际 String
s ,您不能使用 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