How print first largest value Selenium with Java -
my code:
list<webelement> mylist=driver.findelements(by.xpath("//div[@id='legends']//span[4]")); //to store web elements list list<string> all_elements_text=new arraylist<string>(); for(int i=0;i<mylist.size();i++) { all_elements_text.add(mylist.get(i). gettext()); system.out.println(mylist.get(i).gettext()); } object obj = collections.max(all_elements_text); system.out.println("the highest value :"+ obj); }
my output
35.6% 22.6% 15.8% 13.8% 7.4% 4.2% 0.7% highest value :7.4%
it's wrong. want print first largest value.
you need write custom comparator
compareto
method of string
class perform text based comparison , hence, 7.4 compared higher 35 (because of 7 being higher 3). here's java 8 example, e.g.:
list<string> all_elements_text = new arraylist<>(); all_elements_text.add("35.6%"); all_elements_text.add("7.4%"); decimalformat df = new decimalformat("0.0#%"); optional<string> max = all_elements_text.stream() .max((s1, s2) -> { try { return double.valueof(df.parse(s1).doublevalue()). compareto(double.valueof(df.parse(s2).doublevalue())); }catch(exception e) { throw new runtimeexception(e); } }); if(max.ispresent()) { system.out.println(max.get()); }
Comments
Post a Comment