设置一个循环用来遍历数组,一个慢一步,,一个快一步,当到了数组末尾或者快的与慢的下标对应的元素相等就退出,,退出循环后再检测“快的与慢的下标对应的元素相等”这一条件,如果是就说明有重复元素。否则没有。
在使用Go语言的时候,碰到了需要对数组进行去重操作的问题。Java语言有Set集合这个数据结构,可以很方便的将数组转为集合,但是Go语言没有Set,如果仅仅是因为去重操作就手动实现一个Set太繁琐了。可以根据Go语言中的map的特性来简单实现一下
这个是对字符串数组去重操作。可以根据需要的类型稍作修改即可。需要注意的是只支持可以作为map键的结构进行去重!
需要写一个方法,把json数据转换成list集合数据public static List jsonToBean(String data, Object bean) {
List list = new ArrayList()
try {
JSONArray array
try {
array = new JSONArray(data)
for (int i = 0i <array.length()i++) {
Object toBean = getBean(bean)
JSONObject ob = new JSONObject()
ob = (JSONObject) array.get(i)
toBean = jsonStrToBean(ob, toBean)
list.add(toBean)
}
return list
} catch (JSONException e) {
try {
Object obj = null
JSONObject jsonObj = new JSONObject(data)
Object toBean = getBean(bean)
toBean = jsonStrToBean(jsonObj, toBean)
list.add(toBean)
return list
} catch (JSONException e1) {
log.error("Error covert String to JSONObject", e)
e1.printStackTrace()
}
e.printStackTrace()
log.error("Error covert String to JSONArray", e)
}
} catch (SecurityException e) {
e.printStackTrace()
}
return list
}