java 项目 , List<实体>,需要获取list中的重复数据

如 List[{1,2,3,4},{1,3,5,4},{1,3,3,4}] 值,list中的 {1,2,3,4}是一个对象, 根据对象中最后的两值循环与其他对象的最后两个值判断,不相同则删除对象(得到相同的值)。

java项目中获取list重复数据可以使用list的reduplicateIndex方法,实例如下:
public static void main(String[] args) throws Exception {
  List<String> list = new ArrayList<String>();
  list.add("123");
  list.add("456");
  list.add("555");
  list.add("123");
  list.add("444");
  list.add("123");

  // 输出原 List 的内容
  for (int i = 0; i < list.size(); i++) {
    System.out.printf("%2d --> %s%n", i, list.get(i));
  }
  System.out.println("=============");

  // 输出查找重复元素的内容
  int[] indexArray = reduplicateIndex(list, "123");
  for (int index : indexArray) {
    System.out.printf("%2d --> %s%n", index, list.get(index));
  }
}

public static <T> int[] reduplicateIndex(List<T> list, T str) throws Exception{
  List<T> tmp = new ArrayList<T>(list);
  int[] index = new int[Collections.frequency(list, str)];
  int start = tmp.indexOf(str);
  int end = tmp.lastIndexOf(str);
  int i = 0;
  if(start < 0) {
    throw new Exception("数组中不存在 " + str + " 元素!");
  }
  index[i] = start;
  while (start != end) {
    index[++i] = end;
    tmp = tmp.subList(0, end);
    end = tmp.lastIndexOf(str);
  }
  Arrays.sort(index);
  return index;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-04
那你这只能用循环一个一个的去比较了。类似这样的list.get(i).equals(list.get(i+1))去比较了。i+1不能大于数组的长度。不然越界了唉。本回答被网友采纳
第2个回答  2012-10-12
List a=new ArrayList();采用这种方法生成一个list名称为a,之后可以采用a.size()获取元素的个数,然后采用a.get(n) n为第n个元素,这样可以取出list中的逐个元素,取出元素之后,比较后两个元素,则可以采用写一个额外的函数或者类的方法进行解决
第3个回答  2012-10-12
创建一个对象,你已将创建了 ,然后重写他的equals()方法,具体内容是比较该对象的每个值,,然后迭代这个list,迭代出来用对象的eual方法比较2哥对象是否相等,不相等的remove()就可以了
第4个回答  2012-10-12
配合hashmap历遍一次list就好了。如果hashmap中有该值,就把他加入一个新的list里,如果没有就把它加入hashmap里。
相似回答