存储嵌套列表

时间:2015-04-07 19:40:12

标签: java class object methods

我真的需要一些帮助,所以我努力将str存储在列表中的列表中并且这不会吓到工作。我写的代码对我来说非常有意义。有人可以在这里给我一些指导。我绝望了。我在第30行myArrayList.get(index).add(newClassObj);

不断收到错误

建议>>

          at java.util.ArrayList.rangeCheck(ArrayList.java:635)
          at java.util.ArrayList.get(ArrayList.java:411)
          at myClass.main(myClass.java:30)


public class myCLass {

    public static void main(String[] args) 
   {

     ArrayList<LinkedList<myCLass>>
     myArrayList = new ArrayList<LinkedList<MyClass>>(26);

     inFile file = new inFile();
     file.inFile("myfile.txt");
        while(inFile.hasNext())
        {
            String str = inFile.next();
            char ch = str.toUpperCase().charAt(0);
            char ch2 = 'A';
            int index = (int)ch - (int)ch2;
            for (int i = 0; i < 26; i++)
                myArrayList.add(new LinkedList<MyClass>());
            myClass newClassObj = new myClass(str);
            myArrayList.get(index).add(newClassObj);
        }
   }
}

2 个答案:

答案 0 :(得分:3)

在致电myArrayList.get(index).add(newClassObj);之前,您必须确保index&lt; myArrayList.size()。否则你将得到索引超出范围的异常。

您的myArrayList的大小为0,因为您从未添加任何内容。将容量初始化为26不会在列表中添加26个元素。它不会在列表中添加任何元素。

如果您希望列表中包含26个元素,则应正确初始化它:

for (int i = 0; i < 26; i++)
    myArrayList.add(new LinkedList<MyClass>());

答案 1 :(得分:0)

看起来你似乎没有制作你的清单。你有一个包含26个插槽的列表,但你永远不会用列表填充这些插槽。

我不知道这个infile是什么,所以我只是用java.util.Scanner进行测试。我也没有看到这个原始的MyClass类,所以我只是添加了字符串。你的有点不同,但算法是一样的。

import java.util.*;
import java.io.*;
public class MyClass {
    public static void main(String[] args) throws Exception {
        ArrayList<LinkedList<String>> list = new ArrayList<>(26);
        for(int i = 0; i < 26; i++) {
            list.add(new LinkedList<String>());
        }
        Scanner sc = new Scanner(new File("words.txt"));
        while(sc.hasNext()) {
            String next = sc.next();
            char c = next.toUpperCase().charAt(0);
            int index = c - 'A';
            list.get(index).add(next);
        }
        // let's test it by looking at all the H words
        System.out.println(list.get(7));
    }
}

结果:

C:\files\j>javac MyClass.java

C:\files\j>java MyClass
[have, he, his, her, him, how]