我在Java中有一个对象列表,看起来像这样:
List<Video> videos = new ArrayList<Video>();
我的视频对象看起来像这样:
public class Video {
private String nameId;
private Integer id;
...
}
我还有另一个列表,其中只有我的nameId字符串:
List<String> nameIdList = ArrayList<String>();
如何编写一个compareto方法,该方法不通过比较每个视频来对我的视频列表进行排序,而是使用另一个列表?到目前为止,我的方法是使用简单的冒泡排序,但是随着列表的增加,效率将非常低下
例子:
我可以使用具有nameIds的视频对象:“苹果”,“香蕉”,“橙色”
我排序的字符串列表可能是:“香蕉”,“苹果”,“橙色”
因此,我想返回给客户的视频的顺序应为:“香蕉”,“苹果”,“橙色”
最佳答案
Java 8:
videos.sort(Comparator.comparing(v->nameIdList.indexOf(v.getNameId())));
这比this小