示例如下package com.nec.test;import java.util.ArrayList;
import java.util.List;public class Node {

private int startId;
private int endId;
public Node(int startId, int endId) {
super();
this.startId = startId;
this.endId = endId;
}
public int getStartId() {
return startId;
} public void setStartId(int startId) {
this.startId = startId;
} public int getEndId() {
return endId;
} public void setEndId(int endId) {
this.endId = endId;
}

public static void main(String[] args) {
List<Node> list = new ArrayList<Node>();
list.add(new Node(1, 2));
list.add(new Node(2, 7));
list.add(new Node(2, 3));
list.add(new Node(1, 8));
list.add(new Node(3, 4));

//给出起始点 比如 1 4 从list中找出起始点为 12 23 34的3个node来
//请指点
}
}关于如何快速的定位所要的节点,请高人给个思路

解决方案 »

  1.   

    循环判断貌似有点复杂,而且代码不清晰,请各位再帮忙 如果递归或者用tree的话该如何实现呢?
      

  2.   

    我想问下这里面会出现多个node的起始值均相同的情况吗?比如list里面有两个new Node(2,3)
    刚我用排序的方法实现了
    只是不知道符合不符合你的要求
      

  3.   


    public class Node implements Comparable<Node>
    {
        private int startId;
        
        private int endId;
        
        /**
         * @return 返回 startId
         */
        public int getStartId()
        {
            return startId;
        }
        
        /**
         * @param 对startId进行赋值
         */
        public void setStartId(int startId)
        {
            this.startId = startId;
        }
        
        /**
         * @return 返回 endId
         */
        public int getEndId()
        {
            return endId;
        }
        
        /**
         * @param 对endId进行赋值
         */
        public void setEndId(int endId)
        {
            this.endId = endId;
        }
        
        public Node(int startId, int endId)
        {
            super();
            this.startId = startId;
            this.endId = endId;
        }
        
        public static void main(String[] args)
        {
            List<Node> list = new ArrayList<Node>();
            list.add(new Node(1, 2));
            list.add(new Node(2, 7));
            list.add(new Node(2, 3));
            
            list.add(new Node(3, 4));
            list.add(new Node(1, 8));
    //        list.add(new Node(2, 3));
            Collections.sort(list);
            //以下的内容你可以自己封装一下
            int l = list.size() - (4 - 1);
            for (int i = l; i < list.size(); i++)
            {
                System.out.println(list.get(i).getStartId() + "---"
                    + list.get(i).getEndId());
            }
        }
        
        public int compareTo(Node n)
        {
            if (this.endId == n.getStartId() && this.startId + 2 == n.getEndId())
            {
                return 0;
            }
            return 1;
        }
        
    }
      

  4.   

    谢谢朋友们的热心回答,这个可能出现多个node相同的情况的,其实就是寻找从一个点到达另一个点的所有可能途径,并把这个些所有可能途径经过的节点依次找出来。