📅  最后修改于: 2023-12-03 15:24:32.310000             🧑  作者: Mango
Java中提供了Collections
类来对集合进行排序,但是要对Iterable
类型进行排序,需要注意一些细节。
假设我们有一个实现了Iterable
接口的ArrayList
,需要对其中的元素进行排序。
import java.util.ArrayList;
import java.util.Iterator;
public class SortIterableExample implements Iterable<String> {
private ArrayList<String> arrayList = new ArrayList<>();
public SortIterableExample() {
arrayList.add("cat");
arrayList.add("apple");
arrayList.add("dog");
arrayList.add("banana");
}
@Override
public Iterator<String> iterator() {
return arrayList.iterator();
}
}
我们可以通过以下步骤实现对Iterable
类型的排序。
Iterable
类型转化为List
类型Collections
类提供的sort()
方法只能对List
类型进行排序,因此我们需要将Iterable
类型转化为List
类型。
Iterable<String> iterable = new SortIterableExample();
List<String> list = new ArrayList<>();
iterable.forEach(list::add);
上述代码通过遍历Iterable
类型的对象,将其中的元素添加到List
类型的对象中。
List
类型进行排序通过Collections
类提供的sort()
方法可以对List
类型进行排序。
Collections.sort(list);
将上述两个步骤整合起来,可以得到以下代码。
Iterable<String> iterable = new SortIterableExample();
List<String> list = new ArrayList<>();
iterable.forEach(list::add);
Collections.sort(list);
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
public class SortIterableExample implements Iterable<String> {
private ArrayList<String> arrayList = new ArrayList<>();
public SortIterableExample() {
arrayList.add("cat");
arrayList.add("apple");
arrayList.add("dog");
arrayList.add("banana");
}
@Override
public Iterator<String> iterator() {
return arrayList.iterator();
}
public static void main(String[] args) {
Iterable<String> iterable = new SortIterableExample();
List<String> list = new ArrayList<>();
iterable.forEach(list::add);
Collections.sort(list);
list.forEach(System.out::println);
}
}
对Iterable
类型进行排序的关键是将其转化为List
类型。一旦完成了转化,我们就可以像对List
类型一样对其进行排序了。