[Java]集合中数据排序与避免重复
2017-07-05 15:05
316 查看
各种集合的特点以及关系
List: 对付顺序的好帮手一种知道索引位置的集合;
可以有元素重复;
Set: 注重独一无二的性质
不允许重复的集合;
无序
Map: 用key来搜索的专家
使用成对的键值和数据值;
key不允许重复;
不同key可以引用相同的value;
List中的数据如何排序
List自己的API是没有排序的,需要借助Collectio.sort()如果是内置类型,比如String,是可以直接用Collection.sort()的,但是入股是一个自定义class,需要实现Comparable;
class Song implements Compareable<Song> { String title; public String getTitle() { return title; } public int compareTo( Song s ) { return title.compareTo( s.getTitle() ); } }
上述的方式,如果Song有几个属性,如果在不同的场景,需要按照不同的属性来排序,上述方法就有些无能为力了;此时可以使用Collection.sort()的带Compatator的版本
Comparator
class ArtistCompare implements Comparator<Song> { public int compare( Song one, Song two ) { return one.getArtist().compareTo( two.getArtist() ); } } ArtistCompare artistCompare = new ArtistCompare(); Collection.sort( songList, artistCompare );
避免重复数据
为了避免数据重复,我们需要使用Set来存储数据;HashSet为了检查数据重复,需要靠
hashCode()和
equls();
首先使用
hashCode()检查,如果hashCode()相等,再使用
equals()判断;所以自定义类型必须重新实现这两个function;
class Song implements Compareable<Song> { String title; public String getTitle() { return title; } public boolean equals( Object aSong ) { Song s = ( Song )aSong; return getTitle().equals( s.getTitle() ); } public int hasCode() { return title.hashCode(); } }
有了这样的方法重写以后,HashSet就可以无重复数据了。
相关文章推荐
- java.util.Collections类使用,查找集合中重复数据
- Java://Comparator、Comparable的用法(按照要求将set集合的数据进行排序输出):
- java中去除List集合中重复数据的方法
- Java中List集合去除重复数据的方法
- Java中List集合去除重复数据的方法
- java 集合框架(TreeSet操作,自动对数据进行排序,重写CompareTo方法)
- java 数组去掉重复数据和排序
- java 集合 从类似如下的文本文件中读取出所有的姓名,并打印出重复的 * 姓名和重复的次数,并按重复次数排序:
- java 策略模式,list集合,实现id 姓名年龄正序倒序排序(如果年龄或者姓名重复,按id正序排序)
- Java中List集合去除重复数据的方法
- Java中List集合去除重复数据的方法
- Java中List集合去除重复数据的方法
- java8 stream初试,map排序,list去重,统计重复元素个数,获取map的key集合和value集合
- java list集合数据升序降序排序
- Java集合数组列表中的数据排序
- List集合筛选数据去掉重复,含有数据重复次数(JAVAAndroid)
- Java:集合,对列表(List)中的数据(整型、字符串、日期等)进行排序(正序、倒序)的方法;字符串按照整型排序的方法
- JAVA找出List集合中重复次数最多的数据和次数
- Java中集合排序---点击表头对数据进行排序
- 大数据位图法(无重复排序,重复排序,去重复排序,数据压缩)之Java实现