数组去重 JavaScript 和Java
来源:互联网 发布:浙江省网络师训平台 编辑:程序博客网 时间:2024/06/07 03:07
JavaScript 数组去重是面试中经常问到的问题
第一种方法:使用ES5中的indexOf进行去重:
运行结果如下:
第二种方法:先排序后然后再相邻比较去重
此种方法比第一种效率更好:
第三种方法:使用map去重
效率最高:
Java:
要求:清除数组中重复的元素
思路:因为开始时我以为是不能用集合(使用集合的方式在文章底部),所以绞尽脑汁在不用集合的情况下去除数组中重复的元素,需要些一个去除重复内容的方法,我首先想到的的需要一个存储去重后元素的数组,然后两层循环,外层遍历原数组,内容逐个判断是否和之后的元素重复,然后再提出来存入新的数组。
走的弯路:因为数组是有长度的,在使用数组之前一定要先初始化数组给定长度,我在确定去重后数组长度这里纠结和很久,最后想起了有个方法System.arraycopy(被复制的数组,起始下标,接收的新数组,起始下标,结束下标);可以直接复制数组,既然这样,我就没必要纠结新数组的长度了,直接声明一个跟原数组长度一样的临时数组,只要记录下去重后的元素个数,然后就可以确定去重后数组长度再去将临时数组拷贝到新数组就行了。
方法代码:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
测试一下,可行
如果使用集合,那么去重复就简单多了。
只需要创建一个集合,然后遍历数组逐一放入集合,只要在放入之前用contains()方法判断一下集合中是否已经存在这个元素就行了,然后用toArray转成数组一切搞定。
代码:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
最后,最简单的方法就是利用Set集合无序不可重复的特性进行元素过滤;
import java.util.List;import java.util.ArrayList;import java.util.Set;import java.util.HashSet;public class lzwCode { public static void main(String [] args) { testA(); System.out.println("==========================="); testB(); System.out.println("==========================="); testC(); } //去掉数组中重复的值 public static void testA() { String [] str = {"Java", "C++", "Php", "C#", "Python", "C++", "Java"}; for (String elementA:str ) { System.out.print(elementA + " "); } List<String> list = new ArrayList<String>(); for (int i=0; i<str.length; i++) { if(!list.contains(str[i])) { list.add(str[i]); } } /* Set<String> set = new HashSet<String>(); for (int i=0; i<str.length; i++) { set.add(str[i]); } String[] newStr = set.toArray(new String[1]); */ System.out.println(); String[] newStr = list.toArray(new String[1]); //返回一个包含所有对象的指定类型的数组 for (String elementB:newStr ) { System.out.print(elementB + " "); } System.out.println(); } //删除数组中其中一个元素 public static void testB() { String [] str = {"Java", "C++", "Php", "C#", "Python"}; for (String elementA:str ) { System.out.print(elementA + " "); } //删除php List<String> list = new ArrayList<String>(); for (int i=0; i<str.length; i++) { list.add(str[i]); } list.remove(2); //list.remove("Php") System.out.println(); String[] newStr = list.toArray(new String[1]); //返回一个包含所有对象的指定类型的数组 for (String elementB:newStr ) { System.out.print(elementB + " "); } System.out.println(); } //在数组中增加一个元素 public static void testC() { String [] str = {"Java", "C++", "Php", "C#", "Python"}; for (String elementA:str ) { System.out.print(elementA + " "); } //增加ruby List<String> list = new ArrayList<String>(); for (int i=0; i<str.length; i++) { list.add(str[i]); } list.add(2, "ruby"); //list.add("ruby") System.out.println(); String[] newStr = list.toArray(new String[1]); //返回一个包含所有对象的指定类型的数组 for (String elementB:newStr ) { System.out.print(elementB + " "); } System.out.println(); }}
阅读全文
1 0
- JAVA数组去重和JavaScript数组去重比较
- 数组去重 JavaScript 和Java
- javascript数组去重
- javascript 数组去重
- javascript 数组去重
- 数组去重javascript
- javascript数组去重
- JavaScript数组去重
- JavaScript数组去重
- javascript数组去重
- JavaScript 数组去重
- javascript数组去重
- JavaScript 数组去重
- javascript 数组去重
- javascript数组去重
- JavaScript数组去重
- javascript 数组去重
- JavaScript数组去重
- Python实现个性化推荐二
- 微课堂 | 欢迎加入核心交流群,往期微课堂的嘉宾都在这里
- PMCAFF微课堂「已结束」 | 产品汪如何做好“时间管理”让效率提高100倍
- 如果CEO只给你1个月时间,如何完成从0到1
- Linux常用命令
- 数组去重 JavaScript 和Java
- web前端工程师入门须知
- 第6章 抽象类
- 产品经理如何与UI设计师进行有效沟通
- iOS真机调试步骤参考
- JDK自带工具-jstat详解
- 12306被喷谁受益?带着正能量重新设计12306防黄牛购票机制
- linux进程--进程环境(程序的启动与退出)
- SSM框架——使用MyBatis Generator自动创建代码