【问题标题】:java arraylist contains type on objectjava arraylist 包含对象的类型
【发布时间】:2013-04-24 21:11:38
【问题描述】:

我有一个对象 Edges,它有 5 种不同的整数类型与该对象相关联。像这样:

public class Edge implements Comparable {

int weight, tox, toy, fromx, fromy;

public Edge(int x1, int y1, int x2, int y2, int wei) {
    tox = x1;
    toy = y1;
    fromx = x2;
    fromy = y2;
    weight = wei;

}

public int compareTo(Object obj) {

我想创建一个这些 obj 的数组列表,然后在列表上调用 contains 以查看任意整数是否在任何这些数据类型的列表中,edge.tox edge.toy edge.fromx 或 edge.fromy ....有没有办法做到这一点?

谢谢你

【问题讨论】:

  • 等等,你想要List<Integer> 还是List<Edge>

标签: java arrays list arraylist


【解决方案1】:

使用这个:

public List<Integer> asList() {
    Arrays.asList(weight, tox, toy, fromx, fromy);
}

【讨论】:

    【解决方案2】:

    将此方法添加到Edge 类中

    public boolean contains(int num) {
        if(tox == num) return true;
        if(fromx == num) return true;
        if(toy == num) return true;
        if(fromy == num) return true;
        return false;
    }
    

    那么你可以这样做:

    public Edge getEdgeFromNumber(int number) {
      for(Edge e : myArrayList) { 
          if(e.contains(number)) return e;
      }
      return null; // there are no such edges
    }
    

    另外,不要使用原始类型Comparable,您可能需要Comparable&lt;Edge&gt;

    【讨论】:

    • 啊谢谢,所以在使用 Comparable 时,我只说 public int compareTo(Edge obj) 而不是 public int compareTo(Object obj),对吗?
    • 很高兴我能帮上忙。不要忘记在这个答案上打上绿色复选标记!
    猜你喜欢
    • 2012-11-14
    • 2015-05-02
    • 1970-01-01
    • 2017-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    相关资源
    最近更新 更多