0

我正在使用wearet3.0 来获取同义词和每个单词的光泽度......我已经附上了一段我的代码(一个搜索词方法),我有 2 个数组列表......我需要返回 2 个数组列表以供剩余操作....我该怎么做?我尝试使用 map ......但我仍然没有任何唯一的键来这样做......任何人都给我一些想法,我怎样才能获得数组列表(nums 和 nums1)的内容

public ArrayList<String> searchWord(String key)
    {

    nums.clear();   
            /*  A word is having a different WordId in different synsets. Each Word is having a
         *  unique Index.  
        */

        //Get  the index associated with the word, 'book' with Parts of Speech NOUN.

        IIndexWord idxWord = idict.getIndexWord(key, POS.NOUN);
         if(idxWord==null)
                 {
                     return nums;
                 }
        System.out.println("Word ->"+key);
        System.out.println("-------------");
        System.out.println("-------------");

        int i=1;

        /*getWordIDs() returns all the WordID associated with a index 
         * 
         */ 
                IWord word;
                ISynset wordSynset = null;
                //if(StringUtils.isNotEmpty(idxWord.getWordIDs()))
        for(IWordID wordID : idxWord.getWordIDs())
        {
            //Construct an IWord object representing word associated with wordID  
            word = idict.getWord(wordID);
            //System.out.println("SENSE->"+i);
            //System.out.println("---------");

                wordSynset = word.getSynset();

            System.out.print("Synset "+i+" {");

            //Returns all the words present in the synset wordSynset
            for(IWord synonym : wordSynset.getWords())
            {
                System.out.print(synonym.getLemma()+", ");
                                nums1.add(synonym.getLemma());
            }
            System.out.print("}"+"\n");

            nums.add(wordSynset.getGloss());
                        for(String s:nums)
//                      {
//                          System.out.print(s);
//                      }
            //Returns the gloss associated with the synset.
            System.out.println("GLOSS -> "+wordSynset.getGloss());

            System.out.println();
            i++;
                }
                        return nums;



                 //   WordNetDatabase database=WordNetDatabase.getFileInstance();
    }
4

2 回答 2

1

您可以使用持有/包装两个ArrayLists 的对象:

public Something searchWord(final String key) {
    // ...
    return new Something(num1, num2);
}

和:

public class Something {
    private ArrayList<String> num;
    private ArrayList<String> num1;

    public Something(final List<String> num, final List<String> num1) {
        this.num = num;
        this.num1 = num1;
    }

    // getters, setters, ...
}

或者

Pair从 Apache commons-lang使用:

public Pair<List<String>, List<String>> searchWord(final String key) {
    // ...
    return new Pair<List<String>, List<String>>(num1, num2);
}
于 2013-11-05T05:52:14.513 回答
0

我不确定这是否是您正在寻找的,但如果您想要返回两个 ArrayLists,您可以简单地定义一个包含两个 ArrayLists 作为实例变量的类。在您的 searchWord 方法结束时,创建此自定义类的新实例并将其两个 ArrayList 设置为 nums 和 nums1。然后更改您的 searchWord 方法以返回这个新类。只要您以您想要的方式编写自定义类,在返回它们之后访问这两个 ArrayList 的内容应该很容易。

于 2013-11-05T05:52:04.153 回答