有人能告诉我为什么我不断得到IndexOutOfBoundsException
?IndexOutOfBounds错误插入排序列表
Cheeses
只是一个包含一组字符串的数组。 Alphabets
是一个包含单个字符串变量的类。
我正在尝试编写一个程序,其中字符串前面有起始字母表。
所以会出现一个A后面跟着以A开头的单词等等。
public class RecyclerTest {
public static void main(String[] args) {
RecyclerTest obj = new RecyclerTest();
ArrayList<Object> arr_obj = obj.getRandomSublist(Cheeses.sCheeseStrings, 20);
// System.out.println(arr_obj.toString()+"");
}
ArrayList<Object> getRandomSublist(String[] array, int amount) {
final ArrayList<String> list = new ArrayList<>(amount);
Random random = new Random();
while (list.size() < amount) {
list.add(array[random.nextInt(array.length)]);
}
Collections.sort(list, new sortList());
return insert(list);
}
class sortList implements Comparator<String> {
@Override
public int compare(String s, String t1) {
return s.compareTo(t1);
}
}
ArrayList<Object> insert(ArrayList<String> arrayList) {
ArrayList<Object> str = new ArrayList<>();
int count = arrayList.size();
System.out.println(arrayList.toString());
int i = 0;
while (i < count) {
// Alphabets alphabets = new Alphabets(arrayList.get(i).substring(0,1));
String temp = arrayList.get(i).substring(0, 1);
str.add(temp);
System.out.println(str.toString());
System.out.println(i);
while ((i < count) && (temp.equalsIgnoreCase(arrayList.get(i).substring(0, 1)))) {
str.add(arrayList.get(i));
i++;
}
}
str.add(arrayList.get(i));
// System.out.println(str.size());
return str;
}
}
public class Alphabets {
String alp;
public Alphabets(String alp) {
this.alp = alp;
}
public String getAlp() {
return alp;
}
}
原始字符串
【宝贝瑞士,布雷斯布鲁,布鲁德罗勒,夏洛莱,利木 夏洛莱,利木心德CHEVRE,冰袋,Fourme德蒙布里松,新鲜 芝士,鲜奶酪,哈瓦蒂干酪,乐Fium ORBO,Loddiswell埃文代尔, 皮克斯基尔金字塔,Remedou,芝士萨拉塔,萨姆索岛,太特省德莫因,特鲁 杜酒庄,Tymsboro]
Output
[B]
0
[B, Baby Swiss, Bresse Bleu, Bruder Basil, C]
3
[B, Baby Swiss, Bresse Bleu, Bruder Basil, C, Charolais, Charolais, Coeur de Chevre, Cold Pack, F]
7
[B, Baby Swiss, Bresse Bleu, Bruder Basil, C, Charolais, Charolais, Coeur de Chevre, Cold Pack, F, Fourme de Montbrison, Fresh Mozzarella, Fromage Frais, H]
10
[B, Baby Swiss, Bresse Bleu, Bruder Basil, C, Charolais, Charolais, Coeur de Chevre, Cold Pack, F, Fourme de Montbrison, Fresh Mozzarella, Fromage Frais, H, Havarti, L]
11
[B, Baby Swiss, Bresse Bleu, Bruder Basil, C, Charolais, Charolais, Coeur de Chevre, Cold Pack, F, Fourme de Montbrison, Fresh Mozzarella, Fromage Frais, H, Havarti, L, Le Fium Orbo, Loddiswell Avondale, P]
13
[B, Baby Swiss, Bresse Bleu, Bruder Basil, C, Charolais, Charolais, Coeur de Chevre, Cold Pack, F, Fourme de Montbrison, Fresh Mozzarella, Fromage Frais, H, Havarti, L, Le Fium Orbo, Loddiswell Avondale, P, Peekskill Pyramid, R]
14
[B, Baby Swiss, Bresse Bleu, Bruder Basil, C, Charolais, Charolais, Coeur de Chevre, Cold Pack, F, Fourme de Montbrison, Fresh Mozzarella, Fromage Frais, H, Havarti, L, Le Fium Orbo, Loddiswell Avondale, P, Peekskill Pyramid, R, Remedou, Ricotta Salata, S]
16
[B, Baby Swiss, Bresse Bleu, Bruder Basil, C, Charolais, Charolais, Coeur de Chevre, Cold Pack, F, Fourme de Montbrison, Fresh Mozzarella, Fromage Frais, H, Havarti, L, Le Fium Orbo, Loddiswell Avondale, P, Peekskill Pyramid, R, Remedou, Ricotta Salata, S, Samso, T]
17
关于如何解决这个问题的任何建议? –
仍然是相同的错误,它看起来像在end while循环完成i == count的值时的结尾。 –
在这个str.add(arrayList.get(i))中的错误;你试图在循环后传递我 – A7med