测试类
void test() throws InterruptedException {
List<Integer> list = new ArrayList<>();
for(int i=0;i<70;i++){
list.add(i);
}
int toIndex = 20;
for (int i = 0; i < list.size(); i+=20) {
if (i+20>list.size()) {
toIndex = list.size() - i;
}
List<Integer> newList = list.subList(i,i+toIndex);
System.err.println(newList);
// Map<String, String> map = new HashMap<>();
// map.put("mac", String.valueOf(newList));
}
}
将mac地址拆分成20个一组,为了少量访问接口String
为了使mac地址可以匹配,要把数组的[]去掉
采用的是:
String mac1=String.join(",",newList);
List<String> list = new ArrayList<>();
for (String key : maps.keySet()) {
//1.获取电箱编号
String mac = maps.get(key);
list.add(mac);
}
int toIndex = 20;
for (int i = 0; i < list.size(); i+=20) {
if (i+20>list.size()) {
toIndex = list.size() - i;
}
List<String> newList = list.subList(i,i+toIndex);
String mac1=String.join(",",newList);
// System.err.println(newList);
//2.签名,按参数名首字母升序加密
// System.out.println(newList);
map = new HashMap<>();
map.put("client_id", appKey);
map.put("method", daystats);
map.put("access_token", token);
map.put("timestamp", timestamp);
map.put("projectCode", projectCode);
// map.put("mac", String.valueOf(newList));
map.put("mac",mac1);
map.put("year", year);
map.put("month", month);
map.put("day", day);
String sign = MD5utli.sortByKey(map, appSecret);
//3.提交参数(post提交)
String pm2 = "client_id=" + appKey + "&day=" + day + "&method=" + daystats + "&mac=" + mac1 + "&month=" + month
+ "&projectCode=" + projectCode + "&sign=" + sign + "×tamp=" + timestamp + "&access_token=" + token + "&year=" + year;
JSONObject jsonObject = HttpClientUtil.postContentType("https://open.snd02.com:443/invoke/router.as", pm2);
// System.out.println(jsonObject);
String time = year + "-" + month + "-" + day;
insertdayDate(jsonObject, time);
}
}
另一种拆分方式
public class Split {
private static final Integer splitSize = 20;
public static <T> List<List<T>> subList(List<T> list) {
List<List<T>> lists = new ArrayList<>();
int size = list.size();
if (size <= splitSize) {
lists.add(list);
return lists;
}
int number = size / splitSize;
//完整的分隔部分
for (int i = 0; i < number; i++) {
int startIndex = i * splitSize;
int endIndex = (i +1) * splitSize;
lists.add(list.subList(startIndex, endIndex));
}
//最后分隔剩下的部分直接放入list
if (number * splitSize == size) {
return lists;
}
lists.add(list.subList(number * splitSize, size));
return lists;
}
}