![](/img/trans.png)
[英]In java, how do I create my own xml subclassed elements in a DOM returned by 3rd party tools
[英]How do I concatenate two lists to create a 3rd?
我一直在尋找這個問題,並且找到了這個答案 。 番石榴中有一個Iterables.concat 。 但這會返回一個Iterable
,接下來我要做的就是對結果進行排序。 Collections.sort
接受一個List
,而不是一個Iterable
因此下一步,我必須將Iterable
轉換為List
。 有沒有更直接的方法來合並兩個List
,然后對結果進行排序?
在Java 8中:
List<E> sorted = Stream.concat(l1.stream(), l2.stream())
.sorted()
.collect(Collectors.toList());
List<Something> list = Lists.newArrayList(Iterables.concat(...));
Collections.sort(list);
可能是這里的解決方案。
List有addAll(Collection
)方法,我認為這對您有用。 您可以復制第一個列表並進行如下操作:
copyList1.addAll(list2);
如果將SortedSet用作返回類型也很不錯(我發現在大多數情況下這是您真正想要的返回類型),則可以執行以下操作:
FluentIterable.from( list1 ).concat( list2 ).toSortedSet( Ordering.natural() );
您可以使用
List<Something> list1;
List<Something> list2;
list1.addAll(list2);
Collections.sort( list1 );
(假設您的列表是Comparable
的列表)
如果您不想修改list1
,則可以使用:
List<Something> list3 = new ArrayList<>();
Collections.copy( list3, list1 );
list3.addAll( list2 );
Collections.sort( list3 );
在Java 8中(將String替換為列表包含的任何類型):
List<String> newList = Stream.concat(listOne.stream(), listTwo.stream()).collect(Collectors.<String>toList());
這將連接您的兩個列表以創建一個新的第三列表。 然后,可以使用Collections.sort
對其進行排序(如您在帖子中提到的那樣):
Collections.sort(newList);
另請參閱: 如何在Java中加入兩個列表?
以下應與JAVA 8 Stream API一起使用
class T {
@Getter private int sortingProperty;
}
List<T> list3 Stream.of(list1OfT,list2OfT)
.sorted(Comparing(T::getSortingProperty))
.collect(toList());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.