如何在函数中应用二进制搜索?

我想对下面定义的此函数应用二进制搜索。此函数检查已定义列表的城市名称中的字符串,例如“ Sha”或“ owa”,如果找到任何值,则将其添加到新列表中,并以整数数组的形式返回列表的查找ID。

public static Integer[] searchByCharacters(List<City> list, String sub) {
        List<Integer> result = new ArrayList<>();
        Collections.sort(list);
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getCityName().contains(sub))
                result.add(i);
        }
        return result.stream().toArray(Integer[]::new);
    }

如下所示的此功能只能感知一个字符,而不能超过一个字符。

public static Integer[] binarySearchByCharacters(List<City> list, char key) {
        List<Integer> result = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
            char[] chars = list.get(i).getCityName().toCharArray();
            Arrays.sort(chars);
            int index = Arrays.binarySearch(chars, key);
            if (index >= 0)
                result.add(i);
        }
        return result.stream().toArray(Integer[]::new);
    }

如何将其实现到功能中?

评论