java 16-1 ArrayList的练习1
需求:
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的更多相关文章
- java 16 -11 ArrayList存储自定义对象并增强for遍历
需求:ArrayList存储自定义对象并遍历.要求加入泛型,并用增强for遍历. A:迭代器 B:普通for C:增强for LinkedList,Vector,Colleciton,List ...
- Java中的ArrayList的初始容量和容量分配
List接口的大小可变数组的实现.实现了所有可选列表操作,并允许包括 null 在内的所有元素.ArrayList继承于List接口,除继承过来的方法外,还提供一些方法来操作内部用来存储列表的数组的大 ...
- Java LinkedList 和 ArrayList
Java 手册 java.util 类 ArrayList<E> java.lang.Object java.util.AbstractCollection<E> java.u ...
- Java 16 中新增的 Stream 接口的一些思考
这里先提一个题外话,如果想看 JDK 不同版本之间有何差异,增加或者删除了哪些 API,可以通过下面这个链接查看: https://javaalmanac.io/jdk/17/apidiff/11/ ...
- 【Java集合类】ArrayList详解 (JDK7)
相信对于使用过Java的人来说,ArrayList这个类大家一定不会陌生. 数据结构课上讲过, Array是数组,它能根据下标直接找到相应的地址,所以索引速度很快,但是唯一的缺点是不能动态改变数组的长 ...
- Java集合干货——ArrayList源码分析
ArrayList源码分析 前言 在之前的文章中我们提到过ArrayList,ArrayList可以说是每一个学java的人使用最多最熟练的集合了,但是知其然不知其所以然.关于ArrayList的具体 ...
- java集合之ArrayList源码解读
源自:jdk1.8.0_121 ArrayList继承自AbstractList,实现了List.RandomAccess.Cloneable.Serializable. ArrayList内部是通过 ...
- Java基础系列-ArrayList
原创文章,转载请标注出处:<Java基础系列-ArrayList> 一.概述 ArrayList底层使用的是数组.是List的可变数组实现,这里的可变是针对List而言,而不是底层数组. ...
- 浅谈Java语言中ArrayList和HashSet的区别
Java语言中ArrayList和HashSet的区别 2019-04-10 13:22:49 一.基本区别 首先一起看个实例,其代码如下: package com.MrZ_baby.com; i ...
- MD5、SHA1加密java 16位32位
MD5.SHA1加密java 16位32位 import java.math.BigInteger; import java.security.MessageDigest; public class ...
随机推荐
- MAC下 JDK环境配置、版本切换以及ADB环境配置
网上方法,自己总结:亲测可行! 一.JDK环境配置.版本切换: 通过命令’jdk6′, ‘jdk7′,’jdk8’轻松切换到对应的Java版本: 1.首先安装所有的JDk:* Mac自带了的JDK6, ...
- HTML5中的canvas基本概念及绘图
* Canvas(画布) * 基本内容 * 简单来说,HTML5提供的新元素<canvas> * Canvas在HTML页面提供画布的功能 * 在画布中绘制各种图形 * Canvas绘制的 ...
- 怎样让js循环重复执行过程
setInterval(function(){ cc();},60000);setInterval是每隔一分钟就执行一次方法体,主要特点是循环不断的执行.而setTimeout是执行一次就不会继续执行 ...
- sql和access中截取字符串的区别
一向对数据库不熟悉,今天又遇到简单而又被忽略的问题——字符串的截取. 在Excel处理数据过程中,我们常用substring,left,mid,right来截取字符:在.NET编程中,我们常用subs ...
- Hibernate框架的基本搭建(一个小的java project的测试向数据库中插入和查询数据的功能)
Hibernate介绍:Hibernate是一种“对象-关系型数据映射组件”,它使用映射文件将对象(object)与关系型数据(Relational)相关联,在Hibernate中映射文件通常以&qu ...
- Mac OS X上安装 Ruby运行环境
环境 对于新入门的开发者,如何安装 Ruby和Ruby Gems 的运行环境可能会是个问题,本页主要介绍如何用一条靠谱的路子快速安装 Ruby 开发环境.此安装方法同样适用于产品环境! 系统需求 ...
- CoreAnimation-03-隐式动画
简介 每个UI控件,默认自动创建一个图层(根图层),即每个UI控件对应于至少一个图层 可以手动创建图层,这些图层为非根图层 对非根图层的某些属性(标记为Animatable的属性)进行修改,默认会自动 ...
- 饭团(1):用NABCD大法为项目奠基
上一篇文章:提升效率的开发工具 提到高效的开发工具就像催化剂,加速项目开发.这篇文章提到的NABCD大法,就像一份地图,指引项目往正确的方法上发展. 选择比努力更重要.一个项目成功自然离不开码农们的努 ...
- [windows]利用IPSec对指定的ip进行访问限制
以win2003系统为例: 操作(看图): 1.任务:现在192.168.2.200可访问;目的;本地禁止对其访问 2.进入:管理工具->本地安全设置->IP安全策略 3.右键创建IP安全 ...
- 学习HTML5必读之《HTML5设计原理》
引子:很久前看过的一遍受益匪浅的文章,今天再次转过来,希望对学习HTML5的朋友有所帮助. 今天我想跟大家谈一谈HTML5的设计.主要分两个方面:一方面,当然了,就是HTML5.我可以站在这儿只讲HT ...