Java ArrayList中怎么去掉相同的元素并保留相同元素中的最后一个
例如我有一个LArrayist里面放了{a,b,c,d,e,f,s,c,f,a,s,b,d,a,c},怎么去掉里面的相同元素,只保留相同元素的最后一个,求算法代码...
例如 我有一个LArrayist 里面放了{a,b,c,d,e,f,s,c,f,a,s,b,d,a,c},怎么去掉里面的相同元素,只保留相同元素的最后一个 ,求算法代码
展开
4个回答
展开全部
实现思路:将list对象循环两次,拿外层数据和里面的数据对比,一样的删除外层(外层元素肯定比内存的靠前),如果一样的话,删除外层数据,这样最后输出外层数据的list,结果就能保证唯一性,并且保留了后面的元素。
List list = new ArrayList();
Object s = new Object();
for(int i = 0;i<5;i++){
list.add(s);
}
for(int i = 0;i<list.size();i++){//循环list
for(int j = i+1;j<list.size();j++){
if(list.get(i).equals(list.get(j))){
list.remove(i);//删除一样的元素
i--;
break;
}
}
}
for(int i = 0;i<list.size();i++){
System.out.println(list.get(i));
}
展开全部
说下大概思路吧 保留最后一个的话,那就从最后一个开始循环,取出元素(Object o),使用一个List2 存放结果,如果o 不在 List2里面的话 那就 List2.add(o) ;
import java.util.ArrayList;
import java.util.List;
public class Test1 {
/**
* @param args
*/
public static void main(String[] args) {
List list = new ArrayList();
list.add('a');
list.add('b');
list.add('c');
list.add('d');
list.add('e');
list.add('f');
list.add('s');
list.add('c');
list.add('f');
list.add('a');
list.add('s');
list.add('b');
list.add('d');
list.add('a');
list.add('c');
list = trimList(list);
System.out.println(list);
}
private static List trimList(List list) {
List list2 = new ArrayList();
for (int i = list.size() - 1; i >= 0; i--) {
Object o = list.get(i);
if (list2.indexOf(o) == -1) {
list2.add(0, o);
}
}
return list2;
}
}
import java.util.ArrayList;
import java.util.List;
public class Test1 {
/**
* @param args
*/
public static void main(String[] args) {
List list = new ArrayList();
list.add('a');
list.add('b');
list.add('c');
list.add('d');
list.add('e');
list.add('f');
list.add('s');
list.add('c');
list.add('f');
list.add('a');
list.add('s');
list.add('b');
list.add('d');
list.add('a');
list.add('c');
list = trimList(list);
System.out.println(list);
}
private static List trimList(List list) {
List list2 = new ArrayList();
for (int i = list.size() - 1; i >= 0; i--) {
Object o = list.get(i);
if (list2.indexOf(o) == -1) {
list2.add(0, o);
}
}
return list2;
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
写代码你可以自己去写.不过我可以给你一个思路.
list可以放重复的元素. 而set不可以. 你可以遍历一遍list 放入set里面,如果能放进去说明没有重复的.放不进去 就是重复的. 这个是最简单的算法了.不过 list很大的话不建议这样遍历.会很耗效率.
list可以放重复的元素. 而set不可以. 你可以遍历一遍list 放入set里面,如果能放进去说明没有重复的.放不进去 就是重复的. 这个是最简单的算法了.不过 list很大的话不建议这样遍历.会很耗效率.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
import java.util.ArrayList;
import java.util.List;
public class Test3 {
public static void main(String[] args) {
List<Object> list = new ArrayList<Object>();
list.add('a');
list.add('b');
list.add('c');
list.add('d');
list.add('e');
list.add('f');
list.add('s');
list.add('c');
list.add('f');
list.add('a');
list.add('s');
list.add('b');
list.add('d');
list.add('a');
list.add('c');
List<Object> ary = new ArrayList<Object>();//保存结果的list
int len = list.size();
for(int i=0;i<len;i++){
Object temp = list.remove(0);
if(ary.contains(temp)){
ary.remove(temp);
}
ary.add(temp);
}
for(int i=0;i<ary.size();i++){
System.out.println(ary.get(i));
}
}
}
最后的ary就是你要的ArrayLIst啦。
import java.util.List;
public class Test3 {
public static void main(String[] args) {
List<Object> list = new ArrayList<Object>();
list.add('a');
list.add('b');
list.add('c');
list.add('d');
list.add('e');
list.add('f');
list.add('s');
list.add('c');
list.add('f');
list.add('a');
list.add('s');
list.add('b');
list.add('d');
list.add('a');
list.add('c');
List<Object> ary = new ArrayList<Object>();//保存结果的list
int len = list.size();
for(int i=0;i<len;i++){
Object temp = list.remove(0);
if(ary.contains(temp)){
ary.remove(temp);
}
ary.add(temp);
}
for(int i=0;i<ary.size();i++){
System.out.println(ary.get(i));
}
}
}
最后的ary就是你要的ArrayLIst啦。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询