c# - 从列表中删除项目并添加到另一个
问题描述
我有一个要重新排列的电台列表。我需要这样做的方式如下:
从一个列表中删除值并将它们移动到另一个列表以重新排列。我需要根据它们的总影响插入这些值。为此,我想在已填充的列表中找到理想位置。
现在,它基于坐标之间的距离。所以可以说这是我的旧列表:
"PO" 1 1
"wSX" 100 150
"JIK" 300 300
"LPO" 200 250
"NJH" 100 350
所以计算这些值的距离给了我:PO -> WSX -> JIK -> LPO -> NJH -> PO = 987 km
我的新列表如下所示:
"PO" 1 1
"WSX" 100 150
"JIK" 300 300
"PO" 1 1
我想将 LPO 添加到列表中的索引 1 并计算距离,然后我想从那里取出它并将其移动到索引 2 等。从那里我想选择给出最短总距离的变体并将它留在那里. 然后我继续并尝试移动其他值,直到我没有更多可以移动。
这应该给我一个可行的短距离一组站。
我曾尝试使用 while 循环来删除和添加电台,哪种方法可行,但我只是不确定如何让它检查其他位置。
我还需要一些逻辑运算的帮助,以确定最短距离的变化。
///c#
//Rearrange the list
int value = 0;
while(list.Count != 0)
{
newlist.Add(oldlist[value]);
oldlist.RemoveAt(0);
value++;
}
//find the smaller variation
if (i == 0)
smallest = value;
else if(value < smallest)
smallest = value;
我主要只是需要一些帮助来创建一个遵循这条路线的循环。如果您可能需要任何其他信息,请告诉我。
解决方案
您如何尝试将其存储在 SortedList 中?
它应该简化您的问题,您需要做的就是将距离存储为键,将实际对象存储为值。SortedList 应该负责其余的工作。虽然它可能需要更多的内存。
参考:https ://docs.microsoft.com/en-us/dotnet/api/system.collections.sortedlist?view=netframework-4.8
推荐阅读
- r - 在 data.table 中描述 .SD 和 .SDcols 的更好方法是什么?
- c# - Unity 2D 中 Pixel Perfect Camera 和 Cinemachine 的问题
- node.js - 为什么一个 npm 模块会删除其他 npm 模块?
- ruby-on-rails - Spree Commerce 设置错误:“未知版本...(运行时错误)”
- c - 我无法使用 for 循环打印 char 数组的元素
- javascript - 如何使用 reactjs 从多个 API 获取搜索结果
- reactjs - 使用调度返回动作必须是普通对象
- python - 在循环中动态声明和分配变量
- javascript - 构建 ConnectyCube javascript 演示应用程序时出错
- reactjs - 做 POST - 在 JSON 服务器中使用自定义 id