java - 如何重新排序双向链表以匹配具有相同元素的数组的顺序?
问题描述
我正在尝试根据更新顺序中具有相同元素的数组来更新我的双向链表的顺序。
例如,如果我有:
cat->dog->rabbit->panda
我想重新排序以获得数组的顺序:
String[] pets = {"dog", "rabbit", "panda", "cat"};
对于上下文:我是 Java 和一般编程的新手,所以不知道该怎么做。从本质上讲,我所做的是对座位安排的元素进行了洗牌,而双向链表是这些学生的非洗牌版本。我只想更新双向链表以匹配新洗牌版本的顺序。我想要一个可以这样做的功能。
我有访问双向链表的最后一个和第一个元素的方法,以及从一个元素向左或向右移动的能力。我想用基础知识做到这一点,而不使用地图和其他东西。抱歉,如果这听起来很麻烦,我只是想了解发生了什么!
解决方案
如果您的链表类具有与标准相同的操作LinkedList
,您可以创建一个宠物映射到它们在数组中的索引:
Map<String, Integer> arrayIndices =
IntStream.range(0, pets.length)
.boxed()
.collect(Collectors.toMap(i -> pets[i], i -> i));
然后使用按数组索引排序的自定义比较器对列表进行排序:
linkedList.sort(Comparator.comparing(arrayIndices::get));
推荐阅读
- twilio - Twilio 不总是拨号
- android - 如何查看 Gradle 运行的命令
- python - 在 CVXPY 中阻止 LMI
- django - 允许用户在 Django 应用中创建新的数据模型
- json - 不写入 JSON 文件。fs.writeFile 不工作
- java - 使用 POST 方法的 REST 服务中的字符串参数
- apache - XAMPP 7.2.8-0 Mac Apache Web 服务器更新/安装将不再启动
- spring - `requestBodyAndHeaders` 的替代方案
- php - 为数组的键和值对提供自定义名称
- r - 文本挖掘 - 没有 `tm` 包的词干提取方法