一.用List集合实现

int[] str = {5, 6, 6, 6, 8, 8, 7,4};

List list = new ArrayList();for (int i=0; i

list.add(str[i]);

}

}

System.out.println("去除重复后的list集合"+list);

输出结果是:

去除重复后的list集合[5, 6, 8, 7, 4]

可以看到可以去除重复的元素,但是没有实现排序功能。

二.用hashSet或者TreeSet实现

Integer[] nums = { 5, 5, 6, 6, 6, 8, 8, 7, 11, 12, 12};//HashSet hset = new HashSet(Arrays.asList(nums));

TreeSet hset = new TreeSet(Arrays.asList(nums));

Iterator i=hset.iterator();while(i.hasNext()){

System.out.println(i.next());

}

输出结果:5 6 7 8 11 12

可以看到不仅去除了重复数据,而且将数据进行了排序。

其中Arrays.asList()是将一个数组转化为一个List对象,这个方法会返回一个ArrayList类型的对象, 这个ArrayList类并非Java.util.ArrayList类,而是Arrays类的静态内部类!

TreeSet不仅可以使元素不重复,而且可以实现排序等功能的集合,它在对象元素添加到集合中时会自动按照某种比较规则将其插入到有序的对象序列中。

三.用List和set实现

int[] nums = { 5, 6, 6, 6, 8, 8, 7};

List numList = new ArrayList();for (inti : nums)

numList.add(i);

Set numSet = new HashSet();

numSet.addAll(numList);

System.out.println(numSet);

输出结果:[5, 6, 7, 8]

可以看出,也是去掉重复的数据,并且实现了排序。

我们来做一个HashSet和TreeSet的比较:

HashSet

HashSet有以下特点

1) 不能保证元素的排列顺序,顺序有可能发生变化

2) 不是同步的

3) 集合元素可以是null,但只能放入一个null

当向HashSet集合中存入一个元素时,HashSet会调用该对象的hashCode()方法来得到该对象的hashCode值,然后根据 hashCode值来决定该对象在HashSet中存储位置。

简单的说,HashSet集合判断两个元素相等的标准是两个对象通过equals方法比较相等,并且两个对象的hashCode()方法返回值相 等

注意,如果要把一个对象放入HashSet中,重写该对象对应类的equals方法,也应该重写其hashCode()方法。其规则是如果两个对

象通过equals方法比较返回true时,其hashCode也应该相同。另外,对象中用作equals比较标准的属性,都应该用来计算

hashCode的值。

TreeSet类

TreeSet是SortedSet接口的唯一实现类,TreeSet可以确保集合元素处于排序状态。TreeSet支持两种排序方式,自然排序 和定制排序,其中自然排序为默认的排序方式。向TreeSet中加入的应该是同一个类的对象。

TreeSet判断两个对象不相等的方式是两个对象通过equals方法返回false,或者通过CompareTo方法比较没有返回0

自然排序

自然排序使用要排序元素的CompareTo(Object obj)方法来比较元素之间大小关系,然后将元素按照升序排列。

Java提供了一个Comparable接口,该接口里定义了一个compareTo(Object obj)方法,该方法返回一个整数值,实现了该接口的对象就可以比较大小。

obj1.compareTo(obj2)方法如果返回0,则说明被比较的两个对象相等,如果返回一个正数,则表明obj1大于obj2,如果是 负数,则表明obj1小于obj2。

如果我们将两个对象的equals方法总是返回true,则这两个对象的compareTo方法返回应该返回0

定制排序

自然排序是根据集合元素的大小,以升序排列,如果要定制排序,应该使用Comparator接口,实现 int compare(T o1,T o2)方法。

最重要:

1、TreeSet 是二差树实现的,Treeset中的数据是自动排好序的,不允许放入null值。

2、HashSet 是哈希表实现的,HashSet中的数据是无序的,可以放入null,但只能放入一个null,两者中的值都不能重复,就如数据库中唯一约束。

3、HashSet要求放入的对象必须实现HashCode()方法,放入的对象,是以hashcode码作为标识的,而具有相同内容的 String对象,hashcode是一样,所以放入的内容不能重复。但是同一个类的对象可以放入不同的实例 。

转:http://blog.csdn.net/u010680097/article/details/52353369

java数组重复_JAVA数组去除重复数据相关推荐

  1. vba字典重复key_字典去除重复项问题

    首先,我像利用字典算法进行去除重复项. 然后,由于清单中"名称"和"型号"都有可能相同,但是"名称"+"型号"是唯一的, ...

  2. java双重循环去重_java List去除重复数据实现

    作者:多纤果冻 blog.csdn.net/qq_37939251/article/details/90713643 注:参照的文章完成的是int类型去重. String 类型基本一致,我完成的dem ...

  3. java 集合数组 例子_Java数组元素去重(不使用集合)(示例代码)

    /* * 需求:去除整型数组中重复的元素,不能使用集合等方法 * * 解决思路: * 1.对数组中的元素进行从小到大的顺序排序 * 2.获取数组中重复元素的个数 * 3.获取数组中重复元素的索引位置, ...

  4. java读取文本文件,并且去除重复字段

    package ToolUnitl; import java.io.BufferedInputStream;  import java.io.BufferedReader;  import java. ...

  5. java 数组 反射_java数组的反射

    java数组的反射,有一个JAVA API类可以运用:java.lang.reflect.Array 具体应用: 1:判断一个对象是否是数组: int arr[] = {1,2,3}; Class c ...

  6. java数组解析_Java - 数组解析

    一.什么是数组 数组?什么是数组?在我印象中的数组是应该这样的:通过new关键字创建并组装他们,通过使用整形索引值访问它的元素,并且它的尺寸是不可变的! 但是这只是数组的最表面的东西!深一点?就是这样 ...

  7. java 数组成员_java 数组中含有

    <数据结构与抽象:Java语言描述(原书第4版)>一2.2.1 可变大小数组 本节书摘来华章计算机<数据结构与抽象:Java语言描述(原书第4版)>一书中的第2章 ,第2.2. ...

  8. java定义数组范围_Java数组的定义和使用

    为什么需要数组? 问题:我们要计算30个学生的平均分 如果没有数组,我们的代码是这样的 int score1 = 32; int score2 = 56; int score3 = 78; //--此 ...

  9. java 定义数组属性_Java数组的定义与使用

    一.数组概念 可以将多个同一数据类型的数据,存储到同一个容器中 1. 格式 数据类型[] 数组名=new 数据类型[元素个数] "数据类型"表示该数组中可以存放哪一类型的数据 &q ...

最新文章

  1. ztree 默认选中节点_用户管理、角色管理、模块管理、zTree的使用
  2. 2006年4月全国计算机等级考试二级Java语言程序设计
  3. 安卓案例:帧式布局演示(切换颜色)
  4. 找出最具竞争力的子序列_每日算法系列【LeetCode 376】摆动序列
  5. PowerBuilder从入门到精通(PB12.5)
  6. 假期归来,有哪些编程书上了新书榜?
  7. c语言binsearch函数头文件,C++ binary_search()函数详解
  8. mysql 评论回复表设计_数据库设计——评论回复功能
  9. 软件测试体系学习及构建(1)-软件测试环境介绍
  10. 自媒体视频素材|短视频标题文字动画PR模板素材
  11. β-VAE:学习具有约束框架的基本视觉概念
  12. 巨儒艮、漂泊信天翁……这位90后中科院动物所研究员用日历讲述“物种故事”...
  13. 判断两个整数是否互质
  14. [随笔]python之print函数总结
  15. 哈工大机器人章丘_重磅!哈工大机器人、华侨城、明水古城……章丘区春季开工16个项目,总投资1000亿元...
  16. DingTalk:: 通讯录单向同步实现示例
  17. 内网穿透在家远程连接公司电脑
  18. Linux 下搭建NFS网络服务器 Win7 下访问挂载
  19. PHP表单处理-GET与POST区别
  20. 不同摄像头的精度测试

热门文章

  1. Codeforces 650 D. Zip-line
  2. Extjs5.0 学习之路【资源篇】
  3. JS作用域链(转载)
  4. oracle votedisk ocr,Oracle RAC 重建OCR和Votedisk
  5. 从零开始学前端:标签渐变和媒体查询 --- 今天你学习了吗?(CSS:Day25)
  6. opencv抠人像_卸载PS吧!这个小程序就能一键AI抠图,超简单!
  7. python3 协程运行时 如何动态增加协程_python2.7 协程,如何调度运行两个协程?...
  8. 在Python程序中设置函数最大递归深度
  9. 手把手教你使用Python+scrapy爬取山东各城市天气预报
  10. 使用Python+pillow绘制矩阵盖尔圆