java 项目 , List<实体>,需要获取list中的重复数据
如List[{1,2,3,4},{1,3,5,4},{1,3,3,4}]值,list中的{1,2,3,4}是一个对象,根据对象中最后的两值循环与其他对象的最后两个值判断,...
如 List[{1,2,3,4},{1,3,5,4},{1,3,3,4}] 值,list中的 {1,2,3,4}是一个对象, 根据对象中最后的两值循环与其他对象的最后两个值判断,不相同则删除对象(得到相同的值)。
展开
11个回答
展开全部
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;
}
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;
}
展开全部
那你这只能用循环一个一个的去比较了。类似这样的list.get(i).equals(list.get(i+1))去比较了。i+1不能大于数组的长度。不然越界了唉。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
List a=new ArrayList();采用这种方法生成一个list名称为a,之后可以采用a.size()获取元素的个数,然后采用a.get(n) n为第n个元素,这样可以取出list中的逐个元素,取出元素之后,比较后两个元素,则可以采用写一个额外的函数或者类的方法进行解决
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
创建一个对象,你已将创建了 ,然后重写他的equals()方法,具体内容是比较该对象的每个值,,然后迭代这个list,迭代出来用对象的eual方法比较2哥对象是否相等,不相等的remove()就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
配合hashmap历遍一次list就好了。如果hashmap中有该值,就把他加入一个新的list里,如果没有就把它加入hashmap里。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询