📜  如何在java中对interable进行排序(1)

📅  最后修改于: 2023-12-03 15:24:32.310000             🧑  作者: Mango

如何在Java中对Iterable进行排序

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类型的排序。

1. 将Iterable类型转化为List类型

Collections类提供的sort()方法只能对List类型进行排序,因此我们需要将Iterable类型转化为List类型。

Iterable<String> iterable = new SortIterableExample();
List<String> list = new ArrayList<>();
iterable.forEach(list::add);

上述代码通过遍历Iterable类型的对象,将其中的元素添加到List类型的对象中。

2. 对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类型一样对其进行排序了。