如何在java中同时合并两个java对象列表
我们正在使用两种不同的服务。 设备名称存储在服务的redis上。 设备值存储在B服务的mysql上 我想,我可以在mysql上列出B服务的设备列表。 我可以使用RedisAPI立即获得设备名称列表 但是如何同时合并这两种列表对象呢? 我想在避免性能问题的同时或为了避免性能问题 我使用JDK7 谢谢 ===================================== 我的问题是如何合并两个对象,而不是列表如何在java中同时合并两个java对象列表,java,Java,我们正在使用两种不同的服务。 设备名称存储在服务的redis上。 设备值存储在B服务的mysql上 我想,我可以在mysql上列出B服务的设备列表。 我可以使用RedisAPI立即获得设备名称列表 但是如何同时合并这两种列表对象呢? 我想在避免性能问题的同时或为了避免性能问题 我使用JDK7 谢谢 ===================================== 我的问题是如何合并两个对象,而不是列表 Class Device { Integer id; String
Class Device {
Integer id;
String deviceName;
List deviceValues;
}
我可以在Mysql上获取id和DeviceValue。
我可以从redis获得deviceName
如果我得到下面的对象,如何合并它
List<Device> devices = getFromMysql(); //deviceName is null
List<String> deviceNames = getFromRedis();
List devices=getFromMysql()//deviceName为空
列出deviceNames=getFromRedis();
如何合并设备和设备名称?List newList=new ArrayList();
List<String> newList = new ArrayList<String>();
newList.addAll(listOne);
newList.addAll(listTwo);
newList.addAll(listOne);
addAll(列表二);
其他选择:
List<String> newList = new ArrayList<String>(listOne);
newList.addAll(listTwo);
List newList=newarraylist(listOne);
addAll(列表二);
其中listOne是第一个列表,listwo是第二个列表。您可以根据需要使用任何类型而不是类型字符串。如果您使用的是Apachecommon,则
ListUtils.union(list1,list2);
你也可以找
将多个iterable合并为一个iterable。返回
iterable有一个遍历每个iterable元素的迭代器
在输入中。直到必要时才轮询输入迭代器。这个
返回的iterable的迭代器在相应的
输入迭代器支持它
您要求合并,我的理解是,如果一个元素对两个列表都是公共的,那么结果列表应该有一次。
集合是实现这一点的好方法
Set<String> set = new HashSet<>( (listOne.size()+listTwo.size()) * 2 );
set.addAll(listOne);
set.addAll(listTwo);
List<String> newList = new ArrayList<>();
newList.addAll( set );
Set Set=newhashset((listOne.size()+listwo.size())*2);
set.addAll(listOne);
set.addAll(列表二);
List newList=newarraylist();
newList.addAll(集合);
还请注意,尽管您希望避免使用for
或while
,但这实际上是不可能的。这段代码和其他任何代码只是在隐藏它们。addAll
的实现将以这样或那样的方式有一个循环。不过,让API管理这些循环是个好主意,因为它们可能会针对每个平台进行更好的优化。而不是自己做。
但比优化循环更重要的是使用适当的结构。尝试使用列表进行合并比使用哈希集要花费更长的时间。查看此示例,您希望如何处理两个列表共有的元素?是否有重复条目的结果列表?一方面是名称列表,另一方面是没有名称的设备列表。你如何把它们联系在一起?哪个应该是结果列表的类型?排序、设备[0]和设备名称[0]是同一对象。