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

标签 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


        }
    }
}

最佳答案

您只需使用 boolean removeAll(Collection<?> c) List 接口(interface)中定义的方法。你要做的是,你需要将其作为 Collection 的实例。就你而言,

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

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

关于Java,将链表与数组进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26987024/

相关文章:

arrays - 移动 Firebase 数组中的项目

java - java中对String[]数组列表进行排序

mysql - SQL - 遍历 MySQL 中的每一行表?

c++ - 如何正确迭代 double

java - 对于(房间 r : ArrayList<Room>) returns empty Room

java - 如何创建可选的外键引用?

java.lang.NumberFormatException 和 SystemDecimalSeparator

java - Spring Security 未捕获 ApplicationListener 中的登录失败

java - 比较字符串是否具有相同的位数

ios - 在多个页面控件上显示数组的单个元素