JAVA中的数组合并问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA中的数组合并问题相关的知识,希望对你有一定的参考价值。
例如: a[]=1,2,3,5 b[]=3,6,9,8,7 .开辟新数组,将b或a所有元素加入其中 逐一比较a或b数组,是否与另一数组有重复元素,若无,加入新数组,若有,继续拿下一元素进行比较 .排序新数组
参考技术A 首先~~你必须明白Arrays.sort()的作用我解释下sort()是根据元素的自然顺序,对指定对象数组按升序进行排序。数组中的所有元素都必须实现
Comparable
接口。此外,数组中的所有元素都必须是可相互比较的(也就是说,对于数组中的任何
e1
和
e2
元素而言,e1.compareTo(e2)
不得抛出
ClassCastException)。
保证此排序是稳定的:不会因调用
sort
方法而对相等的元素进行重新排序。
该排序算法是一个经过修改的合并排序算法(其中,如果低子列表中的最高元素小于高子列表中的最低元素,则忽略合并)。此算法提供可保证的
n*log(n)
性能。n*log(n)指的是执行时间
该例子中
Student类实现了Comparable接口compareTo()是接口中指定的排序函数~~实现了这个函数sort()方法会自动去进行比较从而实现排序
为什么常量放在前面?
~~这只是习惯问题
name.compareTo(ss.name);这句调用的是String中的compareTo方法而不是Student类中的
Student
ss
=
(Student)o;是对传入的对象o进行强制转化为Student类型转化的对象为ss,个人觉得可以不写
result
=
num
>
ss.num
?
1
:(num==ss.num
?
0
:
-1)这句要从后面()之间的看起,如果this.num==ss.num的话返回0的值,否则返回-1,前面的意思是如果this.num大于ss.sum的话返回1,其他情况由后面的定也就是对Student对象根据num属性进行排序
学java的话~~我可以发给帮助文档给你~~~
java list后台数据合并怎么做?
我取得list的值为上图所示,我要的后台操作是把仓位号相同的number相加,两条数据合并为一条数据。请问怎么做?
List<ProductStorehouseInput> list1 = dao.listproInputsinfo(idInteger);
Iterator it = list1.iterator();
Map map = new HashMap();
while(it.hasNext())
ProductStorehouseInput psi = (ProductStorehouseInput)it.next();
String key = psi.get仓库号();
if(map.get(key) == null)
map.put(key,psi);
else
ProductStorehouseInput psi1 = (ProductStorehouseInput)map.get(key);
psi1.setNumber(psi1.getNumber() + psi.getNumber());
map.put(key,psi1);
list1.remove(psi);
for(Object obj:map.keySet())
list1.add(map.get(obj));
本回答被提问者采纳 参考技术B 这个查询的时候可以group by,具体语法你百度一下
如果不想用这个就遍历list吧,将得到的结果放到一个新的list里 参考技术C 第一步:再建一个List<ProductStorehouseInput> list2,循环一次,把相同仓库号的number相加,存一个id,把单个的直接存起来。
第二步:去掉重复的。 参考技术D 这个你取出来的时候用sql语言一个select sum(number) ......group by ("仓库号") 不就行了吗?
以上是关于JAVA中的数组合并问题的主要内容,如果未能解决你的问题,请参考以下文章