需求:

    ArrayList去除集合中字符串的重复值(去掉相同的字符串)
  分析:
    第一种做法:创建一个新的空集合:
      A:创建1个具有相同字符串的集合
      B:创建1个空的集合
      C:遍历第一个集合里面的元素
      D:把遍历的元素一个个放进去第二个集合中,但有条件
          a:若第二个集合中没有这个元素,则添加进去
          b:若有这个元素,则不添加
      E:遍历第二个集合,输出

 package cn_ArrayList;

 import java.util.ArrayList;
import java.util.Iterator;
public class ArrayListTest1 { public static void main(String[] args) {
//创建具有相同字符串的集合
ArrayList list1 = new ArrayList();
//给这个集合添加元素,有重复值
list1.add("阿猫");
list1.add("阿狗");
list1.add("草草");
list1.add("花花");
list1.add("阿猫");
list1.add("草草");
list1.add("阿狗");
list1.add("阿狗"); //再创建一个空内容的集合
ArrayList list2 = new ArrayList(); //遍历第一个集合
for(int x = 0 ; x < list1.size(); x++){
String s = (String)list1.get(x); //判断第二个集合中是否包含此刻遍历的这个元素
if(! list2.contains(s)){
list2.add(s);
}
}
//遍历第二个集合
Iterator it = list2.iterator();
while(it.hasNext()){
String ss = (String)it.next();
System.out.println(ss);
}
} }

第二种方法:

  需求:

     ArrayList去除集合中字符串的重复值(去掉相同的字符串)
  分析:
    第二种方法:自身元素进行对比
      A:创建一个含有重复元素的集合
      B:利用选择排序法的思想进行查询
          a:索引0的跟后面的对比
            1:若有相同的,则删除后面的,此时注意,要对这个集合的元素减去1
            2:若没有相同的,则保留
          b:第一轮后,索引1再次重复a步骤
      C:遍历集合,输出

 package cn_ArrayList;

 import java.util.ArrayList;
import java.util.Iterator;
public class ArrayListTest2 { public static void main(String[] args) {
//创建一个含有重复元素的集合
ArrayList al = new ArrayList(); //给集合添加元素,含有重复的
al.add("阿猫");
al.add("阿狗");
al.add("草草");
al.add("花花");
al.add("阿猫");
al.add("草草");
al.add("阿狗");
al.add("阿狗"); //选择排序法的思想进行查询:
for(int x = 0; x< al.size() - 1; x++ ){ //设置对比的索引
for(int y = x + 1; y < al.size(); y++){ //设置被对比的索引
if(al.get(x).equals(al.get(y))){ //对比集合上x和y索引上的值
al.remove(y); //删除这个相同的元素
y -- ; //每有一个相同的元素,要进行对比的元素就减少1个
}
}
}
//对完成后的集合进行遍历
//方法1:迭代器
Iterator it = al.iterator();
while(it.hasNext()){
String s = (String)it.next();
System.out.println(s);
}
System.out.println("-----------"); //方法2:for循环
for(int z = 0; z < al.size(); z ++){
String ss = (String)al.get(z);
System.out.println(ss);
}
}
}

java 16-1 ArrayList的练习1的更多相关文章

  1. java 16 -11 ArrayList存储自定义对象并增强for遍历

    需求:ArrayList存储自定义对象并遍历.要求加入泛型,并用增强for遍历. A:迭代器 B:普通for     C:增强for LinkedList,Vector,Colleciton,List ...

  2. Java中的ArrayList的初始容量和容量分配

    List接口的大小可变数组的实现.实现了所有可选列表操作,并允许包括 null 在内的所有元素.ArrayList继承于List接口,除继承过来的方法外,还提供一些方法来操作内部用来存储列表的数组的大 ...

  3. Java LinkedList 和 ArrayList

    Java 手册 java.util 类 ArrayList<E> java.lang.Object java.util.AbstractCollection<E> java.u ...

  4. Java 16 中新增的 Stream 接口的一些思考

    这里先提一个题外话,如果想看 JDK 不同版本之间有何差异,增加或者删除了哪些 API,可以通过下面这个链接查看: https://javaalmanac.io/jdk/17/apidiff/11/ ...

  5. 【Java集合类】ArrayList详解 (JDK7)

    相信对于使用过Java的人来说,ArrayList这个类大家一定不会陌生. 数据结构课上讲过, Array是数组,它能根据下标直接找到相应的地址,所以索引速度很快,但是唯一的缺点是不能动态改变数组的长 ...

  6. Java集合干货——ArrayList源码分析

    ArrayList源码分析 前言 在之前的文章中我们提到过ArrayList,ArrayList可以说是每一个学java的人使用最多最熟练的集合了,但是知其然不知其所以然.关于ArrayList的具体 ...

  7. java集合之ArrayList源码解读

    源自:jdk1.8.0_121 ArrayList继承自AbstractList,实现了List.RandomAccess.Cloneable.Serializable. ArrayList内部是通过 ...

  8. Java基础系列-ArrayList

    原创文章,转载请标注出处:<Java基础系列-ArrayList> 一.概述 ArrayList底层使用的是数组.是List的可变数组实现,这里的可变是针对List而言,而不是底层数组. ...

  9. 浅谈Java语言中ArrayList和HashSet的区别

    Java语言中ArrayList和HashSet的区别 2019-04-10   13:22:49 一.基本区别 首先一起看个实例,其代码如下: package com.MrZ_baby.com; i ...

  10. MD5、SHA1加密java 16位32位

    MD5.SHA1加密java 16位32位 import java.math.BigInteger; import java.security.MessageDigest; public class ...

随机推荐

  1. winform(进程和线程)

    一.进程:需要有用Process类用法一:Process.Start("calc");(不好用)该方法弊端:有许多程序不知道它的运行名字到底是什么,如果写错了,就会出现程序崩溃错误 ...

  2. Virtual Environments for mac

    A Virtual Environment is a tool to keep the dependencies required by different projects in separate ...

  3. android XMl 解析神奇xstream 二: 把对象转换成xml

    前言:对xstream不理解的请看:android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 1.Javabeen 代码 packa ...

  4. android 判断屏幕是否亮着

    PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); boolean screen = p ...

  5. mybatis实战教程(mybatis in action),mybatis入门到精通(转)

    转自:http://www.yihaomen.com/article/java/302.htm (读者注:其实这个应该叫做很基础的入门一下下,如果你看过Hibernate了那这个就非常的简单) (再加 ...

  6. 斯坦福iOS7公开课10笔记及演示Demo

    这一节主要介绍了多线程中的串行队列以及滚动视图UIScrollView. 1 .多线程 这一节只是简单介绍了多线程的串行队列,即把任务加入线程队列后按顺序逐步执行. (1)目前iOS多线程提供的方法主 ...

  7. 通过JAVA反射,调用未知类的类方法

    下面是一个比较简单的通过JAVA的反射机制调用已知方法的例子 package com.togeek.mvntest; import java.lang.reflect.InvocationTarget ...

  8. debian和ubuntu的sh dash bash

    Ubuntu和debian 的 shell 默认安装的是 dash,而不是 bash.运行以下命令查看 sh 的详细信息,确认 shell 对应的程序是哪个:$ls -al /bin/sh dash ...

  9. 百度地图API说明

    JZ's Blog的博客对百度地图说明很清晰 http://www.jiazhengblog.com/blog/2011/07/02/289/

  10. 了解linux内存管理机制(转)

    今天了解了下linux内存管理机制,在这里记录下,原文在这里http://ixdba.blog.51cto.com/2895551/541355 根据自己的理解画了张图: 下面是转载的内容: 一 物理 ...