用Java写算法技巧(1)去掉List中的重复对象
最近写聚类算法,输入的数据集是一些二维点坐标,我的数据有很多重复的点,需要做一下预处理,去掉这些重复点。百度和谷歌一阵后,找到了解决方法,希望对阅读本文的人有帮助。
1、 数据文件points.txt,文件内容和格式如下:
2、添加一个Point对象,用来保存点数据。最重要的是要实现equal方法,这个在去除重复对象时会用到。
public List<Point> getPointsList() throws IOException{ List<Point> lst=new ArrayList<Point>(); String txtPath="points.txt"; BufferedReader br=new BufferedReader(new FileReader(txtPath)); String str=""; while((str=br.readLine())!=null && str!=""){ lst.add(new Point(str)); } br.close(); //过滤重复的Point对象 List<Point> list = new ArrayList<Point>(); for (Object o:lst) { if (!list.contains(o)) { list.add((Point)o); } } return list;}