一,Set
Set:注重独一无二的性质,该体系集合可以知道某物是否已近存在于集合中,不会存储重复的元素
用于存储无序(存入和取出的顺序不一定相同)元素,值不能重复。
该集合中没有特有的方法,直接继承自Collection。
set分为hashset和treeset,均不可重复,treeset会按升序或降序排列,hashset是无序的。
在编写学校实验作业代码内容的时候用到了一些操作,这里就记录一下,假如我们有Set point;
point.size();返回集合大小
遍历要用迭代器
Iteratormypoint=points.iterator(); while(mypoint.hasNext()) { Point now=mypoint.next(); //你的操作 }
point.add();在集合中加入元素,返回值为布尔类型,若加入失败(集合中有相同元素),则返回false。
然后多说一点把,就是我觉得实验的凸包算法就是gift-wrapping算法还挺神奇的。浅说一下吧,先选中最左下方的点(主要是最左边),然后依次选择顺时针偏移角最小的最远的点(主要是顺时针偏移角最小),等到选到最开始的点的时候,就说明我们已经形成一个凸包了。
还有一个很形象的图
public static SetconvexHull(Set points) { if(points.size()<=2) return points;//点的个数小于等于2,就直接返回原set Set hull= new HashSet (); double len=0,degree=0,pre_degree=360,pre_len=0,now_degree=0;//分别为当前长度,当前度数,以前度数,以前长度,和目前我们所在节点的偏移角 Iterator mypoint=points.iterator(); Point dl=mypoint.next();//先储存set里第一个point double pre_x=dl.x(),pre_y=dl.y(); while(mypoint.hasNext()) {//寻找最左偏下的点,主要是最左 Point now=mypoint.next(); if(now.x() pre_len) { be_added=now; pre_len=len; } } } } now_degree=pre_degree;//更新偏移度数 pre_degree=360; if(!hull.add(be_added)) break;//若返回起点则说明已经找完 dl=be_added;//更新刚加入的点 } return hull; }



