我是靠谱客的博主 俊秀果汁,最近开发中收集的这篇文章主要介绍java set查找相同元素_在TreeSet中查找相等的元素,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我正在发展一些元素的历史观点 . 每个元素都有一个开始和结束日期 . 期间可能不重叠,因此每个开始日期必须等于或晚于其前任的结束日期 . 如果结束日期为空,则元素从其开始日期开始有效,直到结束日期已知 .

出于测试目的,我创建了这个类:

public class Entry implements Comparable

{

Integer start;

Integer end;

public Entry(Integer s, Integer e)

{

start = s;

end = e;

}

@Override

public boolean equals(Object obj)

{

if (obj instanceof Entry)

{

return compareTo((Entry) obj) == 0;

}

return false;

}

@Override

public int compareTo(Entry o)

{

if (o.end != null // other ends before or when this starts

&& (o.end.equals(start) || o.end < start ))

{

return 1;

}

if (end != null // other starts after or when this ends

&& (o.start.equals(end) || o.start > end ))

{

return -1;

}

return 0;

}

}

我使用TreeSet对元素进行排序 . 现在我遇到的问题是我无法获得当前活动或首先出现的元素 .

查看JavaDoc的ceiling方法应该可以解决问题:

返回此set中大于或等于给定元素的最小元素,如果没有这样的元素,则返回null .

但这不起作用 .

在测试用例中,我使用一堆条目创建一个TreeSet:

TreeSet ts = new TreeSet();

ts.add(new Entry(1, 3));

ts.add(new Entry(3, 5));

ts.add(new Entry(5, 7));

ts.add(new Entry(7, 9));

ts.add(new Entry(9, 11));

ts.add(new Entry(11, 13));

ts.add(new Entry(13, 15));

然后我使用以下代码获取天花板:

ts.ceiling(new Entry(5, null));

我期望的结果是带有开始5和结束7的条目('相等'条目) . 但结果是带有开始7和结束9的入口(更大的入口) . 两个结果都有资格等于或大于给定元素 . 但是由于JavaDoc提到它返回的元素最少,我期待5-7 Entry .

最后

以上就是俊秀果汁为你收集整理的java set查找相同元素_在TreeSet中查找相等的元素的全部内容,希望文章能够帮你解决java set查找相同元素_在TreeSet中查找相等的元素所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部