首页 > 编程知识 正文

将一个数组逆序输出java,删除排序数组中的重复项

时间:2023-05-06 07:24:05 阅读:27403 作者:637

前几天,在面试中问道:“如果数组中有重复元素,可以用什么方法加重呢? 我有一段时间考虑用一种方法,但后来查了一下资料,发现有很多方法可以实现。 现在就总结一下吧。 是比较简单的几种方法。

一.用List集合实现

int [ ] str={ 5,6,6,6,8,8,7,4 }; listintegerlist=newarraylistinteger (; for(intI=0; istr.length; I ) if (! list.contains(str[I] ) list.add ) str[I]; } } System.out.println ('已移除重复的list集合' list ); 输出结果如下。

排除重复的list集合[5、6、8、7、4]

可以删除重复的元素,但没有实现排序功能。

二.用hashSet或者TreeSet实现

integer [ ] nums={ 5,5,6,6,8,8,7,11,12,12 }; //hashset hset=new hashset (arrays.as list ) ) nums ); treesetintegerhset=newtreesetinteger (arrays.as list ) nums ); Iterator i=hset.iterator (; wile(I.Hasnext () ) system.out.println (I.next ) ); }输出结果:5 6 7 8 11 12

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

其中Arrays.asList )将数组转换为List对象。 此方法返回ArrayList类型的对象。 此ArrayList类是Arrays类的静态内部类,而不是java.util.ArrayList类。

TreeSet不仅确保元素不重复,还提供了具有以下功能的集合:在将对象元素添加到集合中时,根据比较规则自动插入到规则对象序列中的排序。

三.用List和set实现

int [ ] nums={ 5,6,6,6,8,8,7 }; listintegernumlist=newarraylistinteger (; for(intI:nums ) numList.add(i ) I; setintegernumset=newhashsetinteger (; numset.addall(numlist; system.out.println(numset ); 输出结果: [5、6、7、8]

可以看到,消除了重复的数据,实现了排序。

HashSet与TreeSet的比较: HashSet

HashSet具有以下特征

1 )元素排列顺序无法保证,顺序可能会发生变化

2 )不同步

3 )集合元素可以为空,但只能包含一个空

在HashSet集合中存储元素时,HashSet调用对象的hashCode ()方法以获取对象的hashCode值,并根据hashCode值确定对象在HashSet中的存储位置。

简言之,HashSet集合确定两个元素相等的标准是两个对象在equals方法中相对相等,且两个对象的hashCode )方法的返回值为http://www.Sina.coode 如果将一个对象放入HashSet中,则对应于该对象的类的equals方法也应该重写。对于该规则,如果两个对象在equals方法的比较中返回true,则该hashCode也必须相同此外,对象中用作equals比较标准的属性必须用于计算hashCode的值。

注意

TreeSet是SortedSet接口的唯一实现类,TreeSet确保集合元素已排序。 TreeSet支持两种排序方法:自然排序和自定义排序。 其中,自然排序是默认排序方法。 放入TreeSet中的应该是同一类的对象。

TreeSet通过两个对象在equals方法中返回false,或与CompareTo方法相比不返回0,来确定这两个对象不相等

自然排序

自然排序使用要排序的元素的compareto(objectobj )方法比较元素之间的大小关系,并按升序对元素进行排序。

Java提供了Comparable接口。 此接口定义了compareto(objectobj )方法。 此方法返回整数值,可以比较实现接口的对象的大小。

obj1.compareto(obj2)方法指示返回0时要比较的两个对象相等,返回正数表示obj1大于obj2,返回负数表示obj1小于obj2。

如果两个对象的equals方法都始终返回true,则两个对象的compareTo方法都必须返回0

自定义排序

自然排序根据集合元素的大小按升序排序。 如果要自定义排序,则必须使用Comparator接口实现int compare(T o1,T o2方法)。

最重要的事情:

1、TreeSet由二叉树实现,TreeSet中的数据自动排序,不允许包含空值。

2、HashSet是用哈希表实现的。 HashSet中的数据是无序的,可以包含空值,但只能包含一个空值。 两个值不能重复。 就像数据库中唯一的约束。

3、HashSet必须在要包含的对象中实现HashCode ) )方法。 要包含的对象由HashCode代码标识,但具有相同内容的字符串对象与HashCode相同,不能重复包含的内容。 但是,同一个类的对象可以放在不同的实例中。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。