Answers
我使用了
java.util.Set
的元素唯一性写了两个方法:
方法一
把Customer数组的phoneNumber放入
LinkedHashSet
,如果
Set.add()
返回
false
说明这个Customer数组中存在相同的手机号码
public boolean hasSamePhoneNumber(Customer[] customers) {
if (null == customers || customers.length < 1)
return Boolean.FALSE;
LinkedHashSet<String> ts = new LinkedHashSet<String>();
for (Customer customer : customers) {
if (!ts.add(customer.getPhoneNumber()))
return Boolean.TRUE;
}
return Boolean.FALSE;
}
方法二
这个方法与方法一其实没有本质的区别,都是依据
java.util.Set
唯一性。写这个方法的时候,本来是打算先把Customer数组的元素根据phoneNumber做一次排序,排序之后判断是否重复会非常快速。
public boolean hasSamePhoneNumber2(Customer[] customers) {
if (null == customers || customers.length < 1)
return Boolean.FALSE;
TreeSet<Customer> ts = new TreeSet<Customer>(new Comparator<Customer>() {
public int compare(Customer o1, Customer o2) {
return o1.getPhoneNumber().compareTo(o2.getPhoneNumber());
}
});
ts.addAll(Arrays.asList(customers));
return customers.length == ts.size() ? Boolean.FALSE : Boolean.TRUE;
}
蓬蒿人水马辰
answered 11 years, 7 months ago