У меня есть HashSet<String>
, который заполнен строками, называемыми shingles
(если вы возьмете строку «Fizzbuzz» и разделите ее на черепицу, вы получите «Fi», «iz», «zz», zb "," bu "," uz "," zz ". Не важно, но вот что такое галька в этом контексте).ClassCastException при итерации по HashSet
Я пытаюсь вернуть строку содержимого HashSet с помощью следующей методике:
public String getShinglesAsString() {
String shingles = "";
for (String shingle : this.shingles) {
shingles += shingle + " ";
}
return shingles;
}
The for (String shingle : this.shingles)
бросает ClassCastException. Конкретное сообщение: Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.CharSequence
.
Я также пробовал использовать объект Iterator, и я получаю ту же проблему. Это мой код для создания черепицы из строки, подаваемой в конструктор:
// Will generate a new set of shingles based on sentence
public void generateShingles() {
shingles = new HashSet<>();
for (int i=0; i<getSentence().length()-1; i++) {
getShingles().add(getSentence().charAt(i) + getSentence().charAt(i+1));
}
}
EDIT: Вот minmal, complete, verifiable example:
public class SentenceWithShingles {
private String sentence;
private Set<String> shingles;
// Constructor
public SentenceWithShingles(String sentence) {
this.sentence = sentence;
generateShingles();
}
// Will generate a new set of shingles based on sentence
public void generateShingles() {
shingles = new HashSet<>();
for (int i=0; i<getSentence().length()-1; i++) {
getShingles().add(getSentence().charAt(i) + getSentence().charAt(i+1));
}
}
public void setSentence(String sentence) {
this.sentence = sentence;
}
public Set getShingles() {
return shingles;
}
public String getShinglesAsString() {
String shingles = "";
for (String shingle : this.shingles) {
shingles += shingle + " ";
}
return shingles;
}
}
Что такое 'this.shingles', определяется ли он как коллекция' Objects'? – BatScream
Пожалуйста, создайте [минимальный тестовый сценарий] (http://stackoverflow.com/help/mcve). –
Каков тип возврата getShingles? – immibis