java两两组合(不重复)

2023-01-02 00:00:00 java 组合 重复

1、最新做了一个经纬度相减获取最大距离的一个需求需要用到两两组合 因为用的是Set<String>所以自己转了一下数组

    /**
     * 两两组合不重复
     * 公式:n*(n-1)/(2*1)
     * @return
     */
    public static Set<Object> printArrayCom() {
        Set<String> sets = new HashSet<>();
        sets.add("123@456"); //经纬@维度
        sets.add("111@222");
        sets.add("666@888");
        sets.add("777@222");
        Set set = new HashSet();
        String[] array = sets.toArray(new String[sets.size()]);
        for (int i = 0; i < array.length; i++) {
            for (int j = i + 1; j < array.length; j++) {
                String[] comStr = new String[2];
                comStr[0] = array[i];
                comStr[1] = array[j];
                if (!set.contains(comStr)) {
                    set.add(comStr);
                }
            }
        }
        return set;
    }



    public static void main(String[] args) throws Exception {
       Set<Object> objects = printArrayCom();
        System.out.println("共有" + objects.size() + "个组合");
        //第1种循环方式
        Iterator it = objects.iterator();
        while (it.hasNext()) {
            String arr[] = (String[]) it.next();
            System.out.println(arr[0] + " ," + arr[1]);
        }
        System.out.println("=================分割线=================");
        //第2种循环方式
        objects.forEach(item -> {
            String[] result = (String[]) item;
            System.out.println(result[0] + "," + result[1]);
        });
}
    原文作者:EvenBoy
    原文地址: https://blog.csdn.net/weixin_42169734/article/details/122133261
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。

相关文章