GizeH
Legacy Member
Via onderstaande code haal ik de links op van de url "https://nl.wikipedia.org/w/index.php?search=basketball" op wikipedia.
Deze links worden in een arraylist opgeslagen, maar het probleem is dat ik de dubbele elementen er niet kan uitfilteren.
Ik gebruiken ArrayList.contains, en in mijn Link klasse override ik dan de equals functie, waarin ik controleer op de element.ownText() (jsoup eigenschap om de linktitel op te halen.
Iemand een idee wat het probleem zou kunnen zijn?
Deze links worden in een arraylist opgeslagen, maar het probleem is dat ik de dubbele elementen er niet kan uitfilteren.
Ik gebruiken ArrayList.contains, en in mijn Link klasse override ik dan de equals functie, waarin ik controleer op de element.ownText() (jsoup eigenschap om de linktitel op te halen.
Iemand een idee wat het probleem zou kunnen zijn?
Code:
import java.util.*;
import org.jsoup.*;
String url = "https://nl.wikipedia.org/w/index.php?search=basketball";
//String[] allLinks = new String[0];
ArrayList get_links() {
try {
Document doc = Jsoup.connect(url).get();
/*
String str = loadStrings("index.html")[0];
Document doc = Jsoup.parse(str);
print(doc.title());
*/
Element content = doc.getElementById("bodyContent");
Elements lks = content.select("a[href^=/wiki/]");
ArrayList<Link> links = new ArrayList<Link>();
for(Element el: lks) {
Link link = new Link(el);
if (link.element.hasText()) {
if (!links.contains(link)) {
links.add(link);
}
}
}
return links;
} catch(Exception ex) {
}
return null;
}
void print_links(ArrayList links) {
Collections.sort(links, new MyComparator());
Iterator<Link> it = links.iterator();
while (it.hasNext()) {
Link link = it.next();
Element el = link.element;
println(el.ownText());
}
}
void setup() {
ArrayList links = get_links();
print_links(links);
}
class Link {
Element element;
Link(Element el) {
element = el;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof Link) {
Link link = (Link) obj;
if (link.element.ownText() == this.element.ownText()) {
return true;
}
}
return false;
}
}
class MyComparator implements Comparator<Link> {
@Override
public int compare(Link l1, Link l2) {
return l1.element.ownText().compareToIgnoreCase(l2.element.ownText());
}
}

Python programmer? 

