java dbscan_DBSCAN算法的Java实现

news/2025/3/14 7:46:12

/**

* 检查给定点是不是核心点

* @param lst 存放点的链表

* @param p 待测试的点

* @param e e半径

* @param minp 密度阈值

* @return 暂时存放访问过的点

*/

public static List isKeyPoint(List lst,Point p,int e,int minp){

int count=0;

List tmpLst=new ArrayList();

for(Iterator it=lst.iterator();it.hasNext();){

Point q=it.next();

if(getDistance(p,q)<=e){

++count;

if(!tmpLst.contains(q)){

tmpLst.add(q);

}

}

}

if(count>=minp){

p.setKey(true);

return tmpLst;

}

return null;

}

public static void setListClassed(List lst){

for(Iterator it=lst.iterator();it.hasNext();){

Point p=it.next();

if(!p.isClassed()){

p.setClassed(true);

}

}

}

/**

* 如果b中含有a中包含的元素,则把两个集合合并

* @param a

* @param b

* @return a

*/

public static boolean mergeList(List a,List b){

boolean merge=false;

for(int index=0;index

if(a.contains(b.get(index))){

merge=true;

break;

}

}

if(merge){

for(int index=0;index

if(!a.contains(b.get(index))){

a.add(b.get(index));

}

}

}

return merge;

}

/**

* 返回文本中的点集合

* @return 返回文本中点的集合

* @throws IOException

*/

public static List getPointsList() throws IOException{

List lst=new ArrayList();

String txtPath="src\\com\\sunzhenxing\\points.txt";

BufferedReader br=new BufferedReader(new FileReader(txtPath));

String str="";

while((str=br.readLine())!=null && str!=""){

lst.add(new Point(str));

}

br.close();

return lst;

}

}

后在主程序中实现算法,如下所示:

package com.sunzhenxing;

import java.io.*;

import java.util.*;

public class Dbscan {

private static List pointsList=new ArrayList();//存储所有点的集合

private static List> resultList=new ArrayList>();//存储DBSCAN算法返回的结果集

private static int e=2;//e半径

private static int minp=3;//密度阈值

/**

* 提取文本中的的所有点并存储在pointsList中

* @throws IOException

*/

private static void display(){

int index=1;

for(Iterator> it=resultList.iterator();it.hasNext();){

List lst=it.next();

if(lst.isEmpty()){

continue;

}

来源:考试大-Java认证

责编:xxm  评论 纠错

文章来源:https://blog.csdn.net/weixin_42508185/article/details/114186316
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:https://dhexx.cn/news/show-3793332.html

相关文章

[豆趣]成长日记

2007年01月16日 21:36:00 豆跟豆娘对话&#xff1a;"什么叫男儿&#xff1f;"豆娘说&#xff1a;"男儿就是泛指男同志&#xff0c;比方说男儿当自强啊。"&#xff0c;豆一指豆娘&#xff1a;"那&#xff0c;你是女儿啦"&#xff0d;&#xff0d;…

混合云技术难题

StarWind Converter是通过Sector by Sector的方式实现转换&#xff0c;不会对源文件作任何修改&#xff0c;有兴趣的可以试验下效果&#xff1b;现在Windows 7已内建对VHD文件的支持&#xff0c;可以从VHD文件启动计算机. StarWind Converter 是一款名副其实的VMDK、VHD镜像互转…

java new对象时 在内存中的流程_Java程序在内存中运行详解

Java语言是一门编译型语言&#xff0c;需要将编写的源代码(.java文件)编译之后(.class字节码文件)&#xff0c;通过 jvm 才能正常的执行&#xff0c;下面的内容记录了一个程序从编写到执行整个过程在内存中是怎么一个变的。一、JVM的内存分布先了解下 JVM 的内存分布&#xff0…

[豆趣]世界上仅存5只恐龙

2007年01月03日 20:26:00 元旦放了天假&#xff0c;火急火燎的赶回家&#xff0c;恰好&#xff0c;给豆在网上淘的《恐龙世纪》也到了&#xff0c;这家伙缠着我要恐龙也有些时日了&#xff0c;本来不想给他买的&#xff0c;可是豆娘说&#xff1a;"总比喜欢奥特曼什么的强…

Windows 消息机制(三)

原文出处&#xff1a;http://blog.csdn.net/zhu2695/article/details/8952254 本文Windows消息机制的讲解&#xff0c;共分四篇。 剖析Windows的消息运行机制 一、引言      随着Windows操作系统的不断推广&#xff0c;众多软件开发包都提供有开发基于Windows平台应用软件…

[个人]分享ubuntu

2006年12月30日 16:58:00 今天&#xff0c;拿到了从荷兰寄来的ubuntu 6.06 LTS版本&#xff0c;LTS是long time support的缩写&#xff0c;据说&#xff0c;6.06之后又推出了6.10版本&#xff0c;不过不再免费送CD了。当然&#xff0c;ubuntu的老大发话了&#xff0c;2007年要推…

Object-C学习代码【类别的练习】

2019独角兽企业重金招聘Python工程师标准>>> // // NSStringNumberConvenience.h // CategoryTest // // Created by on 14-9-10. // Copyright (c) 2014年 apple. All rights reserved. //#import <Foundation/Foundation.h>interface NSString (NumberC…

[领域]javascript hacking guide part 4

2007年02月05日 21:15:00 孙向晖 sunshineormer at hotmail.com在正式开始之前&#xff0c;先说点关于RHG的话题&#xff0c;我的JHG系列&#xff0c;基本是在仿照着RHG的风格在写作。RHG的述事风格很有条理性&#xff0c;并且会指导你跳过跳过再跳过一些无关痛痒的程序片段。这…

struts2 常用 constant 总结

2019独角兽企业重金招聘Python工程师标准>>> 废话不说&#xff0c;直接看注释&#xff1a; <!-- 动态方法调用支持 默认值为true 设置为false将不支持 --><constant name"struts.enable.DynamicMethodInvocation" value"true" />&…

java 三个数取最小值_java编程:从键盘输入3个数,求最大值,求最小值,求从大到小进行排列!!在线等!...

展开全部完整代e69da5e6ba903231313335323631343130323136353331333337393464码如下&#xff1a;import java.util.Scanner;public class Max {public static void main(String[] args) {Scanner in new Scanner(System.in);System.out.print("输入个数:");int[] ar…