contains()with Generic Type

时间:2017-01-13 02:27:55

标签: java

我需要转换方法“contains()”

public boolean contains(List<Integer> list, int value){
    for (int i : list) {
        if(i == value)
          return true;

进入一个可以搜索每个数据类型的方法,但我真的不知道该怎么做。

import java.util.List;

public class Search<T> {
    public boolean contains(List<T> list, T value){
        for ( T i : list) {
            if(i == value)
                return true;
        }
        return false;
    }
}

这是我迄今为止的尝试,但我不知道这是否是我必须做的全部 我希望有人可以帮助我。

2 个答案:

答案 0 :(得分:1)

List<T>中已有一种方法,List<T>::contains

如果你想实现自己的,有两种方法可以做到:

  1. 相同的实例:
  2. 如果equals方法没有被覆盖,那么如果它们在内存中实际上是相同的实例,它将返回true

    public <T> boolean contains(List<T> list, T object){
        for( T t : list){
            if(t.equals(object))
                return true;
        }
        return false;
    }
    
    1. 类似的对象
    2. 这里强迫你的T类实现Comparable接口,其中包含compareTo(o : Object),如果它们相似则会返回0。

      public <T extends Comparable> boolean contains(List<T> list, T object){
          for( T t : list){
              if(t.compareTo(object) == 0)
                  return true;
          }
          return false;
      }
      

答案 1 :(得分:0)

尝试使用equals代替==

import java.util.List;

public class Search<T> {
    public boolean contains(List<T> list, T value){
        for ( T i : list) {
            if(i.equals(value))
                return true;
        }
        return false;
    }
}