Java中ArrayList问题:删除一个ArrayList中的重复元素,注意留意一个问题
该问题有两种方法:
一
利用两个数组,此法简单,不讨论
二
利用一个数组,从第0个开始依次取元素,并在其后元素中查找是否有该元素,有则删掉后面的重复元素,依次遍历。---但是这种情况要特别注意,当后续元素中有连续的重复元素时,如不加上y--使y(待比较的后续元素)回退一个,很可能会因为我们删掉当前重复元素y后其后的连续重复元素顶上,导致忽略掉顶上的重复元素。
代码如下:
public static void main(String[] args) {
ArrayList array=new ArrayList();
array.add("hello");
array.add("world");
array.add("java");
array.add("hello");
array.add("java");
array.add("world");
array.add("world");
array.add("world");
array.add("java");
System.out.println("array:"+array);
for(int i=0;i<array.size();i++){
for(int j=i+1;j<array.size();j++){
if(array.get(i)==array.get(j)){
array.remove(j);
}
}
}
System.out.println("array:"+array);
}
结果为:
array:[hello, world, java, hello, java, world, world, world, java]
array:[hello, world, java, world]
漏掉了一个world,因在删除连续的几个world时,删除第一个重复的world后后一个顶上了,在删除元素后,我们没有回退一下判断刚刚顶上的元素。
改进:
public static void main(String[] args) {
ArrayList array=new ArrayList();
array.add("hello");
array.add("world");
array.add("java");
array.add("hello");
array.add("java");
array.add("world");
array.add("world");
array.add("world");
array.add("java");
System.out.println("array:"+array);
for(int i=0;i<array.size();i++){
for(int j=i+1;j<array.size();j++){
if(array.get(i)==array.get(j)){
array.remove(j);
j--;
}
}
}
System.out.println("array:"+array);
}
结果为
array:[hello, world, java, hello, java, world, world, world, java]
array:[hello, world, java]
正确。
Java中ArrayList问题:删除一个ArrayList中的重复元素,注意留意一个问题的更多相关文章
- Java实现 LeetCode 82 删除排序链表中的重复元素 II(二)
82. 删除排序链表中的重复元素 II 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字. 示例 1: 输入: 1->2->3->3->4- ...
- java基础 File 递归删除文件夹中所有文件文件夹 目录(包含子目录)下的.java文件复制到e:/abc文件夹中, 并统计java文件的个数
File 递归删除文件夹中所有文件文件夹 package com.swift.kuozhan; import java.io.File; import java.util.Scanner; /*键盘录 ...
- Java实现 LeetCode 83 删除排序链表中的重复元素
83. 删除排序链表中的重复元素 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次. 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: 1-> ...
- Java实现 LeetCode 80 删除排序数组中的重复项 II(二)
80. 删除排序数组中的重复项 II 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O ...
- Java实现 LeetCode 26 删除排序数组中的重复项
26. 删除排序数组中的重复项 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) ...
- C#程序中:如何删除xml文件中的节点、元素。
C#中动态的清理xml文件中的垃圾信息是程序员必会的哦.这就像数据库一样,不会清理数据怎么可以呢?其实xml文件就可以用作一个小的数据库,存储一些简单的信息.所以,用C#程序实现xml文件的增.删.改 ...
- **请写出一段Python代码实现删除一个list里面的重复元素
通常涉及到去重操作最好使用set,但是考虑到某些时候可能遇到不允许使用set的情况,那就自己实现一下: l = [2, 4, 5, 6, 1, 3, 4, 5] def f(l, b=0, c=1): ...
- 77. Combinations (java 求C(n,k)的组合,排除重复元素)
题目: Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. 解析:同求全 ...
- python从一个目录中复制全部文件图片至另一个目录中,及删除指定目录中的图片
import shutil import os #目录自己改一下即可,复制 path = "./static/imgs/" new_path = "./static/up ...
- Python代码实现删除一个list里面的重复元素
lst=[11,22,33,44,22,11,22,44] print(list(set(lst))) # 打印结果:[33, 11, 44, 22] d = {} for index,item in ...
随机推荐
- eclipse 启动tomcat报Spring错误 Error creating bean with name 'serviceOrderBiz': Injection of autowired dependencies failed
启动tomcat报异常,提示Sring无法创建serviceOrderBiz(第一行红字),继续看是因为有一个自动注入的字段无法注入ModuleInterfaceBiz(第二行红字),检查servic ...
- error proc
/*************************************************************************\ * Copyright (C) Michael ...
- socket.io发送给指定的客户端
http://www.cnblogs.com/ajccom/archive/2013/07/18/3197809.html http://stackoverflow.com/questions/100 ...
- Nosql database
http://kb.cnblogs.com/page/42731/ http://nosql-database.org/ http://blog.jobbole.com/1344/ http://ww ...
- 如何从代码层防御10大安全威胁中的 Xpath Injection?
普遍性和可检测性: Xpath 注入是 OWASP TOP10 安全威胁中 A1 Injection 中的一种,注入漏洞发生在应用程序将不可信的数据发送到解释器时.虽然注入漏洞很容易通过审查代码发现, ...
- django作models的UPDATE时,注意有过滤外键的情况
就是如果要过滤的时候,存在外键,则需要取到原始字段的名称,不然就是ID. 原始名称以__(双下划线)引用. 如: def path2db(release_version, develop_versio ...
- CountDownLatch的使用
CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待.主要方法public CountDownLatch(int count);publi ...
- 在keil中使用Astyle格式化你的代码的方法
一个好的程序,不仅要有好的算法,同时也需要有良好的书写风格.写出好的算法不容易,但是好的代码风格却并不困难.提到格式化代码,Astyle是一个不能错过的工具,它可以方便的将程序代码格式化成自己想要的样 ...
- TCP/IP TELNET & SSH
快速导航 远程登录示例 关于远程登录? 嵌入? 用来控制远程服务器上运行的应用程序字符? 转义? 操作方式? 关于SSH? 远程登录示例 关于远程登录? 网络虚拟终端(Network Virtual ...
- C# 日期格式化的中的 正斜杠的问题
Console.WriteLine(DateTime.Now.ToString("yyyy/MM/dd" )); //这行代码, 如果你在系统日期格式默认的情况下输出 2013/0 ...