java 从文本文件中删除相同的子网代理

pxy2qtax  于 2023-01-29  发布在  Java
关注(0)|答案(1)|浏览(91)

我想从文本文件中删除相同的子网代理。
文件=代理. txt
19.15.15.90:61234
19.15.15.29:28010
19.15.15.80:8998
19.15.15.102:8998
25.25.24.15:8998
25.25.24.80:8998
210.192.38.25:8998
210.192.38.29:8998
我需要输出
19.15.15.90:61234
25.25.24.15:8998
210.192.38.25:8998
删除哪些代理并不重要,我只需要从每个子网中保留1个代理。
子网=前3个数字相同。

toe95027

toe950271#

一种可能的解决方案1是将所有项添加到List中,对列表进行排序,然后遍历列表检查前n个字符是否与前一项相同,如果不相同,则打印它。
首先,我们需要获取.的第三个索引2:

public static int nthIndexOf(String text, char needle, int n) {
    for (int i = 0; i < text.length(); i++) {
        if (text.charAt(i) == needle) {
            n--;
            if (n == 0) {
                return i;
            }
        }
    }
    return -1;
}

然后简单地执行上面提到的迭代:

for (int i = 1; i < list.size(); i++) {
    int pos = nthIndexOf(list.get(i), '.', 3);
    if (!list.get(i).substring(0, pos).equals(list.get(i - 1).substring(0, pos))) {
        System.out.println(list.get(i));
    }
}

哦,也打印第一个条目,因为它将是唯一的,考虑到它还没有与任何东西进行比较。
当然,我只是打印System.out.println(list.get(i));,但在那里做任何必要的事情。
Example
1我可能遗漏了一些边缘案例,但这要由您来检查
2Credit where credit is due

相关问题