Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中的列表集合接口_Java_List_Indexing - Fatal编程技术网

java中的列表集合接口

java中的列表集合接口,java,list,indexing,Java,List,Indexing,请在我的代码中找到以下函数: private static List<String> formCrfLinesWithMentionClass(int begin, int end, String id, List<String> mList, int mListPos, List<String> crf) { List<String> crfLines = crf; int yes = 0; mL

请在我的代码中找到以下函数:

    private static List<String> formCrfLinesWithMentionClass(int begin, int end, String id, 
        List<String> mList, int mListPos, List<String> crf) {
    List<String> crfLines = crf;
    int yes = 0;
    mListPosChanged = mListPos;
//--------------------------------------------------------------------------
    for (int crfLinesMainIter = begin; crfLinesMainIter < end; ) {
        System.out.println(crfLines.get(crfLinesMainIter));
//---------------------------------------------------------------------------
        //the total number of attributes without orthographic features
        //in a crfLine excluding the class attribute is 98
        if (!crfLines.get(crfLinesMainIter).equals("") && crfLines.get(crfLinesMainIter).split("\\s").length == 98) {
            //in mList parenthesis are represented by the symbol
            //in crfLines parenthesis are represented by -LRB- or -RRB-
            //we make a check to ensure the equality is preserved
            if(val.equals(crfLines.get(crfLinesMainIter).split("\\s")[0])) {                 
                yes = checkForConsecutivePresence(crfLinesMainIter, mList, mListPos, id, crfLines);
                if (yes > 0) {
                    mListPosChanged += yes;
                    System.out.println("formCrfLinesWithMentionClass: "+mListPosChanged);
                    for (int crfLinesMentionIter = crfLinesMainIter; 
                            crfLinesMentionIter < crfLinesMainIter + yes; 
                            crfLinesMentionIter++) {
                        String valString = "";
                        if (crfLinesMentionIter == crfLinesMainIter) {
                            valString += crfLines.get(crfLinesMentionIter);
                            valString += " B";
                            crfLines.add(crfLinesMentionIter, valString);             
                        }
                        else {
                            valString += crfLines.get(crfLinesMentionIter);
                            valString += " I";                                
                            crfLines.add(crfLinesMentionIter, valString);
                        }
                    }
                    crfLinesMainIter += yes;
                }
                else {
                    ++crfLinesMainIter;
                }
            }
            else {
                ++crfLinesMainIter;
            }
        }
        else {
            ++crfLinesMainIter;
        }
    }
    return crfLines;
}
private static List formcrflineswithreferenceclass(int-begin,int-end,String-id,
列表mList、int MLISTOPS、列表crf){
列表crfLines=crf;
int yes=0;
mListPosChanged=mListPos;
//--------------------------------------------------------------------------
对于(int crfLinesMainIter=begin;crfLinesMainIter0){
MLISPOSCHANGED+=是;
System.out.println(“FormCrFlineswithinterenceClass:+MLISTopChanged”);
对于(int CRFLINESMONTIONITER=crfLinesMainIter;
CRFLINESMONTIONITER
我面临的问题如下: crfLines是一个列表集合接口。 当for循环(介于//----之间)启动时,crfLines.get(crfLinesMainIter)工作正常。但一旦它进入if并对其执行其他处理,即使“crfLinesMainIter”更改了crfLines.get(crfLinesMainIter)似乎获得了某个以前的值。它不会检索索引处的实际值。有人面临过这样的情况吗?有人能告诉我为什么会这样吗


我的实际问题是,什么时候会出现这样的情况:即使索引可能不同,list.get()函数仍然从另一个索引中检索以前的值

例如:

List crfLines=新链接列表()

如果crfLinesMainIter=2

get(crfLinesMainIter)给我一个值,比如说20,这个值20满足if循环条件。然后进行进一步的处理。现在,当for循环执行crfLinesMainIter的值时,会更改为5。在本例中,crfLines.get(5)实际上应该为我带来一个不同的值,但它仍然为我带来了以前的值20。

(不是答案。)

修改(或多或少)以提高可读性:

private static List<String> formCrfLinesWithMentionClass(int begin, int end, String id, List<String> mList, int mListPos, List<String> crf) {
    List<String> crfLines = crf;
    mListPosChanged = mListPos;

    int i = begin;
    while (i < end) {
        if (crfLines.get(i).equals("") || (crfLines.get(i).split("\\s").length != 98)) {
            ++i;
            continue;
        }

        if (!val.equals(crfLines.get(i).split("\\s")[0])) {
            ++i;
            continue;
        }                 

        int yes = checkForConsecutivePresence(i, mList, mListPos, id, crfLines);
        if (yes <= 0) {
            ++i;
            continue;
        }

        mListPosChanged += yes;
        for (int j = i; j < i + yes; j++) {
            String valString = crfLines.get(j);
            valString += (j == i) ? " B" : " I";
            crfLines.add(j, valString);             
        }
        i += yes;
    }

    return crfLines;
}
private static List formcrflineswithreferenceclass(int-begin、int-end、String-id、List-mList、int-mListPos、List-crf){
列表crfLines=crf;
mListPosChanged=mListPos;
int i=开始;
while(i如果(是的,从代码的侧面看,它并不是一个描述它有多棒的图表……我发现很难一眼就解释这段代码。你的问题不清楚,我们也不知道这个方法应该做什么。你有没有使用调试器检查过这段代码?这可能会让你找到问题的解释。你在哪里发现的学习如何像这样使用for循环?这是我第一次看到。我的主要问题是,crfLines.get(I)是如何使用的不能在索引处给我一个值吗?@rookie它可以;它将返回你给它的索引位置上的任何
字符串。你确定列表包含你认为它的功能吗?你确定
开始
结束
值是你认为的吗?你确定
是你认为的吗?那就是这是一个很难解释的代码问题——很难回答这些问题。如果你不想让代码更干净,我建议你进行一些循环迭代。很抱歉代码不干净。这是一个非常大的程序。我相信我会进行循环迭代。我很确定索引值就是我想要的我确信不同索引值处的内容是不同的。是否可能因为它是一个链表,如果我在特定索引处向它添加值,当它返回for循环时,它丢失了索引方向?@rookie如果你正在更改迭代的列表,是的,这会弄乱你的索引,这取决于你在插入东西。一般来说,你在做任何事情时都要非常小心,比如