Find an index in an ArrayList that contains a string

Using Jsoup, I parse the HTML from the site to populate the ArrayList with what I needed to get from the website. So now I have an ArrayList that is populated with lines. I want to find an index in this list that contains a specific row. For example, I know that somewhere in the list, in some index, there is a string (literal) "Claude", but I can not imagine the code that finds the contains "Claude" index in an ArrayList ... that's what I tried but returns -1 (not found):

 ArrayList < String > list = new ArrayList < String > (); String claude = "Claude"; Document doc = null; try { doc = Jsoup.connect("http://espn.go.com/nhl/team/stats/_/name/phi/philadelphia-flyers").get(); } catch (IOException e) { e.printStackTrace(); } for (Element table: doc.select("table.tablehead")) { for (Element row: table.select("tr")) { Elements tds = row.select("td"); if (tds.size() > 6) { String a = tds.get(0).text() + tds.get(1).text() + tds.get(2).text() + tds.get(3).text() + tds.get(4).text() + tds.get(5).text() + tds.get(6).text(); list.add(a); int claudesPos = list.indexOf(claude); System.out.println(claudesPos); } } } 
+7
source share
2 answers

You are misleading String.indexOf and List.indexOf . Given the following list:

 list[0] = "Alpha Bravo Charlie" list[1] = "Delta Echo Foxtrot" list[2] = "Golf Hotel India" list.indexOf("Foxtrot") => -1 list.indexOf("Golf Hotel India") => 2 list.get(1).indexOf("Foxtrot") => 11 

So:

 if (tds.size() > 6) { // now the string a contains the text of all of the table cells joined together String a = tds.get(0).text() + tds.get(1).text() + tds.get(2).text() + tds.get(3).text() + tds.get(4).text() + tds.get(5).text() + tds.get(6).text(); // now the list contains the string list.add(a); // now you're looking in the list (which has all the table cells' items) // for just the string "Claude", which doesn't exist int claudesPos = list.indexOf(claude); System.out.println(claudesPos); // but this might give you the position of "Claude" within the string you built System.out.println(a.indexOf(claude)); } for (int i = 0; i < list.size(); i += 1) { if (list.get(i).indexOf(claude) != -1) { // list.get(i).contains(claude) works too // and this will give you the index of the string containing Claude // (but not the position within that string) System.out.println(i); } } 
+25
source
 First check whether it is an instance of String then get index if (x instanceof String) { ... } for (int i = 0; i < list.size(); i++) { if (list.get(i).getX() == someValue) { // Or use equals() if it actually returns an Object. // Found at index i. Break or return if necessary. } } 
0
source

All Articles