Java Arraylist问题更改在一个地方导致了另一个地方

罗希特·加格(Rohit Garg)

我一直在从事一个项目,并且在Java中遇到了Arraylist的问题。问题是prim的算法1.随机生成图2.为每个顶点创建一个邻居数组列表3.将数组列表传递给2个不同的函数

问题:-当我在一类中对Arraylist进行更改时,它反映的是另一类。如何解决?在此先感谢。在这里我调用mst.java g.getneighbourlist()时,它可以正常工作。但是现在,当我使用相同的g.getbeighbourlist()调用mstFheap.java时,其不同的neibourlist是指从first中删除的所有边缘都从second中删除。

         //main.java

                 public class main{
                    GenGraph g = new GenGraph(size, density);
        g.makeGraph();
        g.print();
        // calling for finding mst
        mst m= new mst(g.getNeighbourlist(),size);
        mstFheap m1= new mstFheap(g.getNeighbourlist(), size);

        m.start(); // starts the algo
        m.print(); // print mst
        m1.print(); // In second class just printing the neibhour list
                   }

        //mst.java

         public class mst {
private List<LinkedList<edge>> neighbour =null;
private LinkedList<edge> mst = new LinkedList<edge>();
private int [] traker = null;
private int totalCost =0;
private int size=0;
private boolean path=false;

public mst(List<LinkedList<edge>> list,int x)
{
    this.neighbour=new ArrayList<LinkedList<edge>>(list);;
    this.size=x;
    this.traker= new int[size];
    for(int i=0;i<size;i++){traker[i]=0;}

}

            public void start() {

    List<Integer> subGroup = new ArrayList<Integer>();
    Random ran= new Random();
    int val= ran.nextInt(size);
    subGroup.add(val);
    traker[val]=1;
    while(!path){
        edge e= minCost(subGroup);
        totalCost+= e.weight;
        subGroup.add(e.v2);
        neighbour.get(e.v1).remove(e);
        edge temp = new edge(e.v2,e.v1,e.weight);
        neighbour.get(e.v2).remove(temp);
        traker[e.v1]=1;
        traker[e.v2]=1;
        mst.add(e);
        if(subGroup.size()==size) path=true;
    }

}

        //mstFheap.java

           public class mstFheap {
         private fHeap f;
         private double totalCost =0;
         private double [] keyList= null;

//Graph elements
private int size=0;
private List<LinkedList<edge>> neighbour =null;
public double cost(){return totalCost;}


public mstFheap(List<LinkedList<edge>> list,int size){
    f=new fHeap();
    neighbour=new ArrayList<LinkedList<edge>>(list);
    this.size=size;
    keyList=new double[size];       
        for(int i=0;i<size;i++){
            keyList[i]= Double.POSITIVE_INFINITY;
            fHeapNode temp= new fHeapNode(i, keyList[i]);
            f.insert(temp, keyList[i]);
            }
    }

            public void print(){
    System.out.print(" Keylist:-  ");
    for(int i=0;i<neighbour.size();i++){
        System.out.print(neighbour.get(i).size()+" ");
    }

}
菲尔多

尝试:

mst m= new mst(new ArrayList(g.getNeighbourlist()),size);
mstFheap m1= new mstFheap(new ArrayList(g.getNeighbourlist()), size);

这将为每种算法制作一份列表。

注意:请以大写字母开头的类命名。并考虑使用易于理解的名称。“ g”是图,那么为什么不将其称为“图”呢?

编辑:我刚刚看到,这是一个“列表列表”。因此,您可以调整您的getNeighbourlist()方法,使其返回“深层副本”。这意味着:代替列表的副本,您将必须返回条目列表的副本的新列表。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Java中将可变数量的方法从一个地方复制到另一个地方

来自分类Dev

Java创建一个使用另一个ArrayList的数字的随机ArrayList <Integer>

来自分类Dev

在Java中将ArrayList从一个类传递到另一个类

来自分类Dev

如何使用java中另一个类的另一个面板更改面板的内容

来自分类Dev

java将项目从一个arraylist添加到另一个arraylist

来自分类Dev

在Java中使用另一个Arraylist遍历ArrayList

来自分类Dev

如何在java的int数组中更改一个值等于另一个值?

来自分类Dev

AngularJS范围更改应在一个地方更改,而另一个地方应如何实现?

来自分类Dev

Java:创建一个在文件中其他地方识别的类

来自分类Dev

Java:无法在另一个 Java 文件中更改 JFrame 组件的内容

来自分类Dev

如何从另一个对象修改对象的私有ArrayList属性(Java)

来自分类Dev

如何在Java中访问另一个类的Arraylist

来自分类Dev

如何使用ArrayList从Java中的另一个类调用方法?

来自分类Dev

如何使用一个Java程序监视另一个Java程序的输出?

来自分类Dev

从一个Java文件读取并写入另一个Java文件

来自分类Dev

另一个“只能迭代数组或java.lang.Iterable实例”的问题

来自分类Dev

计算CGPoint从一个地方到另一个地方的距离

来自分类Dev

将价值从一个地方传递到另一个地方

来自分类Dev

无线卡显示在一个地方而不是另一个地方?

来自分类Dev

无线卡显示在一个地方而不是另一个地方?

来自分类Dev

JS在一个地方工作,但不在另一个地方

来自分类Dev

将元素从一个地方移动到另一个地方

来自分类Dev

Angular2 RouterLinking在一个地方工作,而不是另一个地方

来自分类Dev

将图像从一个地方移动到另一个地方

来自分类Dev

在另一个线程读取它时更改Java列表引用

来自分类Dev

Java在另一个方法中更改JLabel的文本

来自分类Dev

Java在另一个方法中更改JLabel的文本

来自分类Dev

在Java中基于另一个int更改int

来自分类Dev

html选择使用java脚本更改另一个选择的选项/值

Related 相关文章

  1. 1

    在Java中将可变数量的方法从一个地方复制到另一个地方

  2. 2

    Java创建一个使用另一个ArrayList的数字的随机ArrayList <Integer>

  3. 3

    在Java中将ArrayList从一个类传递到另一个类

  4. 4

    如何使用java中另一个类的另一个面板更改面板的内容

  5. 5

    java将项目从一个arraylist添加到另一个arraylist

  6. 6

    在Java中使用另一个Arraylist遍历ArrayList

  7. 7

    如何在java的int数组中更改一个值等于另一个值?

  8. 8

    AngularJS范围更改应在一个地方更改,而另一个地方应如何实现?

  9. 9

    Java:创建一个在文件中其他地方识别的类

  10. 10

    Java:无法在另一个 Java 文件中更改 JFrame 组件的内容

  11. 11

    如何从另一个对象修改对象的私有ArrayList属性(Java)

  12. 12

    如何在Java中访问另一个类的Arraylist

  13. 13

    如何使用ArrayList从Java中的另一个类调用方法?

  14. 14

    如何使用一个Java程序监视另一个Java程序的输出?

  15. 15

    从一个Java文件读取并写入另一个Java文件

  16. 16

    另一个“只能迭代数组或java.lang.Iterable实例”的问题

  17. 17

    计算CGPoint从一个地方到另一个地方的距离

  18. 18

    将价值从一个地方传递到另一个地方

  19. 19

    无线卡显示在一个地方而不是另一个地方?

  20. 20

    无线卡显示在一个地方而不是另一个地方?

  21. 21

    JS在一个地方工作,但不在另一个地方

  22. 22

    将元素从一个地方移动到另一个地方

  23. 23

    Angular2 RouterLinking在一个地方工作,而不是另一个地方

  24. 24

    将图像从一个地方移动到另一个地方

  25. 25

    在另一个线程读取它时更改Java列表引用

  26. 26

    Java在另一个方法中更改JLabel的文本

  27. 27

    Java在另一个方法中更改JLabel的文本

  28. 28

    在Java中基于另一个int更改int

  29. 29

    html选择使用java脚本更改另一个选择的选项/值

热门标签

归档