java里有没有专门判断List里有重复的数据?最好能知道是第几行重复.

konwdotnet 2007-07-30 10:39:28
java里有没有专门判断List里有重复的数据?最好能知道是第几行重复.
...全文
3092 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
konwdotnet 2007-07-30
  • 打赏
  • 举报
回复
谢谢。我下午试试。
  • 打赏
  • 举报
回复
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;
}
waysue 2007-07-30
  • 打赏
  • 举报
回复
顶了
wmzsl 2007-07-30
  • 打赏
  • 举报
回复
哈哈
  • 打赏
  • 举报
回复
使用 Collections.frequency(list, "123"); 可以获得 123 在 list 中的数量。

使用 list.indexOf() 和 list.lastIndexOf() 来判断,如果两个数值相等表示没有重复,不相等表示有重复,不过只能检查两个的重复。如果要检查多个的位置,需要自己实现。
konwdotnet 2007-07-30
  • 打赏
  • 举报
回复
没找到啊
blkh1983 2007-07-30
  • 打赏
  • 举报
回复
你去看看JAVA API上面写得很清楚
joejoe1991 2007-07-30
  • 打赏
  • 举报
回复
学习 谢谢bao110908(讨厌蟑螂)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧