Java,将链接列表与数组进行比较

时间:2014-11-18 05:11:05

标签: java arrays loops linked-list

使用将读入两个不同段落的Java程序,将两个字符串转换为每个单词的字符串数组,然后将String One转换为链接列表,这将立即按字母顺序排序。

列表排序后,我感到困惑。我有一个for循环编写,以获得array2的长度,以根据需要推进它,但是什么是推进链表的好循环?这可能是基本的,但没有想到任何事情。

编辑:留下这一点信息。我的错。重点是逐字逐句比较数组和链表,如果两个单词匹配,那么该单词和节点将从链表中删除。

另外,关于Java LinkedList类的另一个问题是,是否有删除功能?如果是这样,它会自动将其拉回并链接两个线程吗?

我已经测试过,看看是否正确分配了字符串,它们是。

该计划如下。

package algorithm;
import java.io.File;
import java.io.FileWriter;
import java.io.FileNotFoundException;
import java.util.Collections;
import java.util.List;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Scanner;

public class main 
{

    public static void main (String[] args) throws FileNotFoundException
    {   
        String input1 = new Scanner(new File("passage1.txt")).useDelimiter("\\Z").next();
        String input2 = new Scanner(new File("passage2.txt")).useDelimiter("\\Z").next();
        String[] array1 = input1.split(" ");
        String[] array2 = input2.split(" ");

        List<String> list = new LinkedList(Arrays.asList(array1));

        Collections.sort(list);

        int length = array2.length;

        for (int c = 0; c < length; c++)
        {
            // LinkedList loop here


        }
    }
}

1 个答案:

答案 0 :(得分:1)

只需使用List接口中定义的boolean removeAll(Collection<?> c)方法即可。你需要做的是,你需要作为Collection的实例。在你的情况下,

List<String> list = new LinkedList(Arrays.asList(array1));
Collections.sort(list);
List<String> toRemove = new LinkedList(Arrays.asList(array2));
list.removeAll(toRemove);

现在列表对象将包含toRemove对象中不存在的元素。