我试图通过结合两种算法来返回最佳路径来解决旅行商问题
第一种算法使用环境ArrayList生成最佳路径
第二种算法将优化第一种算法获得的路由,但在这样做时,我需要创建一个新的ArrayList,即环境ArrayList,它被洗牌以匹配最佳路径数组的顺序
请你帮我做这个,因为我在洗牌环境数组列表时遇到了麻烦
这是环境ArrayList,其中每个节点由name、x cords、y cords组成:
static ArrayList<Node> environment = new ArrayList<Node>(Arrays.asList(
new Node("1", 19, -121),
new Node("2", 343, -132),
new Node("3", 21, -132),
new Node("4", 47, -122),
new Node("5", 35, -139),
new Node("6", -54, 165),
new Node("7", -45, 21),
new Node("8", 89, -65),
new Node("9", 58, -72),
new Node("10", 21, -54)
));
返回的最佳路径数组:[10, 4, 3, 7, 9, 2, 1, 5, 8, 6]
另外,将数组列表设置为静态也会导致在从python进行洗牌时出现问题,因为它仍然相对较新。
谢谢你的帮助
因为一旦获得最佳路径并对其应用洗牌,就会将ArrayList定义为静态,从而删除最佳路径步骤中的信息。
一旦您将数组排序并洗牌此数组列表,您可以克隆另一个数组,这将将信息保留在环境
和随机洗牌
来自环境
的新副本
public class Program {
static ArrayList<Node> environment = new ArrayList<Node>(Arrays.asList(
new Node("1", 19, -121),
new Node("2", 343, -132),
new Node("3", 21, -132),
new Node("4", 47, -122),
new Node("5", 35, -139),
new Node("6", -54, 165),
new Node("7", -45, 21),
new Node("8", 89, -65),
new Node("9", 58, -72),
new Node("10", 21, -54)
));
static ArrayList<Node> shuffle;
public static void main(String[] args) {
// Once get best path
shuffle = environment.clone();
// continue your logic
}
}
您可以使用以下方法对ArrayList对象进行洗牌
Collections.shuffle(list);
另外,将数组列表设置为静态也会导致在从python进行洗牌时出现问题,因为它仍然相对较新。
不,静态
是表示类
属性的关键字,它的值对于该类的所有对象都是静态的,可以使用类引用访问,但非静态属性只能通过类对象访问
class MyClass{
static List<String> staticList = List.of("HI", "Hello");
List<String> nonStaticList = new ArrayList<>();
}
public static void main(String[] args){
System.out.println(MyClass.staticList .get(1)); // no errors
//System.out.println(MyClass.list.get(5)); // error
Myclass myObject = new MyClass();
System.out.println(myObject.nonStaticList) // no errors
System.out.println(myObject.staticList .get(1)); // no errors
}
问题内容: 我有多个数组,我想根据其中一个的排序顺序对所有数组进行排序,如下所示: 我希望函数执行后,数组将如下所示: 问题答案: 您可以执行以下操作:首先根据键控数组的索引的索引对它们进行索引的值对它们进行排序,然后使用: 如果要在任何类型的集合上使它通用(但仍以与std lib集合算法相同的样式返回数组): 以及带有自定义比较器的版本:
我有多个数组,我想根据其中一个数组的排序顺序对所有数组进行排序,如下所示: 我预计函数执行后的数组将如下所示:
在 Java 中,如何根据另一个排序数组的索引顺序对数组进行排序?例如,如果我有: 我按升序对 arr2 进行排序 我希望另一个是: 我怎么能做到这是Java?我知道我会保存新的排序数组到新的实例。任何帮助,谢谢!
我有一个webservice,当我调用该webservice时得到这个响应。 现在我要根据我在这个数组中得到的顺序对这个完整的数组进行排序?我怎样才能做到这一点呢?
问题内容: 是否可以对看起来像这样的数组进行排序和重新排列: 匹配此数组的安排: 不幸的是,我没有任何要跟踪的ID。我将需要优先处理items-array,以使其尽可能接近sortingArr。 更新: 这是我正在寻找的输出: 任何想法如何做到这一点? 问题答案: 就像是: 这是一个较短的代码,但是会破坏数组: