package cn.itcast_04;

import java.util.ArrayList;

import java.util.Iterator;

/*

* 需求:ArrayList去除集合中字符串的重复值(字符串的内容相同)

* 要求:不能创建新的集合,就在以前的集合上做。

*/

public class ArrayListDemo2 {

public static void main(String[] args) {

// 创建集合对象

ArrayList array = new ArrayList();

// 添加多个字符串元素(包含内容相同的)

array.add("hello");

array.add("world");

array.add("java");

array.add("world");

array.add("java");

array.add("world");

array.add("world");

array.add("world");

array.add("world");//注意这里:有连续添加,下面写关于算法的时候注意要写y--

//下面会解释

array.add("java");

array.add("world");

// 由选择排序思想引入,我们就可以通过这种思想做这个题目

// 拿0索引的依次和后面的比较,有就把后的干掉

// 同理,拿1索引...

for (int x = 0; x < array.size() - 1; x++) {

for (int y = x + 1; y < array.size(); y++) {

if (array.get(x).equals(array.get(y))) {

array.remove(y);

y--;               //为什么有这句?因为添加的时候有连续添加几个相同的元素,在比较array.get(1)与array.get(3)时会删除array.get(3)(即world这个元素),删除之后,如果没有这段y--代码,则会直接y++,此时y就会变为加1变为4,而由于之前删除了 array.get(3),集合总个数要减一,那么此刻array.get(3)就变成了java(因为之前的array.get(3)(即world被删除了)它后面的array.get(4)顶上来了就变成array.get(3),同理,在出现连续相同的world时,之后的array.get(4)与array.get(1)比较时,被删除,那么array.get(4)的array.get(5)将顶替array.get(4)这个位置。但是,y没有做减1操作,所以下次比较的是array.get(1)与array(5)是否相等,而之前的array.get(5)早已经变成array.get(4),你此刻比较的其实是array.get(6)这个元素,因为随着array.get(5)将顶替array.get(4)这个位置,那么array.get(6)将顶替array.get(5)这个位置,那么就存在漏网之鱼array.get(5),那么怎么解决呢?y--,减掉1,那么下次比较的还是array.get(1)与array.get(4))

}

}

}

// 遍历集合

Iterator it = array.iterator();

while (it.hasNext()) {

String s = (String) it.next();

System.out.println(s);

}

}

}

只能写到这了,如果你没看懂,可以用代码debug一下,实在不行,就在纸上依次写下步骤看,世上无难事只怕有心人(写的不好,希望多多批评)

转载于:https://blog.51cto.com/wangdenghui/1768997

集合框架(去除ArrayList集合中的重复字符串元素案例2)相关推荐

  1. Java基础知识强化之集合框架笔记27:ArrayList集合练习之去除ArrayList集合中的重复字符串元素...

    1. 去除ArrayList集合中的重复字符串元素(字符串内容相同) 分析: (1)创建集合对象 (2)添加多个字符串元素(包含重复的) (3)创建新的集合 (4)遍历旧集合,获取得到每一个元素 (5 ...

  2. java集合的添加方法_深入理解java集合框架之---------Arraylist集合 -----添加方法

    Arraylist集合 -----添加方法 1.add(E e) 向集合中添加元素 /** * 检查数组容量是否够用 * @param minCapacity */ public void ensur ...

  3. 集合框架之ArrayList集合

    ArrayList集合的介绍与应用 import java.util.ArrayList; public class TextArraryList { public static void main( ...

  4. 深入理解java集合框架之---------Arraylist集合 -----添加方法

    Arraylist集合 -----添加方法 1.add(E e) 向集合中添加元素 /*** 检查数组容量是否够用* @param minCapacity*/public void ensureCap ...

  5. java arraylist 构造_深入理解java集合框架之---------Arraylist集合 -----构造函数

    ArrayList有三个构造方法 ArrayList有三个常量 1.private transient Object[] elementData (数组); 2.private int size (元 ...

  6. 14 Java集合(集合框架+泛型+ArrayList类+LinkedList类+Vector类+HashSet类等)

    本篇主要是集合框架基础和List集合,Map集合等等后续更 集合 14.1 集合框架 14.1.1 概念 14.1.2 集合架构 14.2 Collection接口 14.2.1 常用方法 14.3 ...

  7. 【Java集合框架】ArrayList类方法简明解析(举例说明)

    本文目录 1.API与Java集合框架 2.ArrayList类方法解析 2.1 add() 2.2 addAll() 2.3 clear() 2.4 clone() 2.5 contains() 2 ...

  8. Java 集合框架分析:JAVA集合中的一些边边角角的知识

    相关文章: Java 集合框架分析:Set http://blog.csdn.net/youyou1543724847/article/details/52733723 Java 集合框架分析:Lin ...

  9. java集合课程,I学霸官方免费课程三十三:Java集合框架之Map集合

    I学霸官方免费教程三十三:Java集合框架之Map集合 Map接口 Map集合采用键值对(key-value)的方式存储数据,其中键不可以重复.值可以重复. 常用类有HashMap.TreeMap和P ...

最新文章

  1. python construct 字符串_通过字符串变量在Python中设置和获取@property方法
  2. ios查看帧率的软件_程序员必看!直播软件开发弱网下保障高清流畅推流的方法...
  3. 用Delphi进行word开发
  4. 网站能拿到其他网站的cookie_在网站推广中企业网站能发挥哪些作用?(一)
  5. Django 组件- 中间件
  6. html浮动标签调整位置,HTML 获取当前标签在页面的位置,并且把其他的浮动窗口显示过来...
  7. 如何注册Spring Bean
  8. 最全计算机基础知识竞赛试题及答案,计算机基础知识竞赛试题.doc
  9. android 检测cpu温度传感器,软件是如何测量手机CPU温度的?即使手机没有温度传感器...
  10. 北京信息科技大学计算机科学与技术研究生,2020年北京信息科技大学计算机科学与技术考研经验分享...
  11. 计算机管理员的用户名市什么意思,电脑中的Administrator是什么意思?
  12. Ambisonics解释:声音工程师指南
  13. 移动服务器连接响应慢,移动打开网页速度慢的解决方法
  14. 纯css变换图片颜色png
  15. 【高性价比】初学者入门吉他值得推荐购买的民谣单板吉他品牌—VEAZEN费森吉他
  16. 连续信号积分 matlab程序,连续信号的微积分与卷积.ppt
  17. linux系统安装文网卫士,360安全卫士for Linux
  18. blast序列比对参数的含义
  19. 中了鬼影病毒的处理办法
  20. 航空母舰与钢铁侠助阵,这么硬核的智能锁你见过么

热门文章

  1. linux基础实验报告6,Linux实验报告6参考答案.doc
  2. mysql instead of触发_Instead of触发器
  3. 苹果开发者账号可以创建多少测试证书_苹果开发者账号相关问题解答—企业开发者账号...
  4. 什么不用 iframe 做微前端
  5. linux环境变量权限不够,linux环境变量及权限的理解
  6. html5数组删除相同数据,js数组相减简单示例【删除a数组所有与b数组相同元素】...
  7. 客户端配置_PPPoE服务器端客户端的配置案例脚本
  8. Python的filter、map、reduce与lambda结合使用
  9. java中long的包装类_Java中基本数据的包装类
  10. java请求百度短链接_长链接生成短链接Java源码(调用百度接口)