Java JSON:Array&;比较
我有一组JSON数组:Java JSON:Array&;比较,java,arrays,json,sorting,Java,Arrays,Json,Sorting,我有一组JSON数组: listSession: [h0y78u93, h0y78u93, h0y78u93, h0y78u93, h0y78u93, 9i88u93, 9i88u93, 9i88u93, 9i88u93, 9i88u93] 我使用以下代码创建了阵列: ArrayList<String> listSession = new ArrayList<String>(); for(int u=1; u < k+1; u++) {
listSession: [h0y78u93, h0y78u93, h0y78u93, h0y78u93, h0y78u93, 9i88u93, 9i88u93, 9i88u93, 9i88u93, 9i88u93]
我使用以下代码创建了阵列:
ArrayList<String> listSession = new ArrayList<String>();
for(int u=1; u < k+1; u++) {
String str = Integer.toString(u);
JSONArray arrTime=(JSONArray)mergedJSON2.get(str);
JSONObject objSession;
StringsessionName;
for (Object ro : arrTime) {
objSession = (JSONObject) ro;
sessionName = String.valueOf(objSession.get("sessionID"));
listSession.add(sessionName);
}
}
ArrayList listSession=新建ArrayList();
对于(int u=1;u
请问您对如何比较列表中每个属性的值有何建议或意见。如果它是一样的,我应该把它作为一个。
也就是说,从上面的示例来看,计数应该只有两个而不是十个
谢谢。您可以使用
Arraylist.contains()
方法,如下所示:
ArrayList<String> listSession = new ArrayList<String>();
for(int u=1; u < k+1; u++) {
String str = Integer.toString(u);
JSONArray arrTime=(JSONArray)mergedJSON2.get(str);
JSONObject objSession;
StringsessionName;
for (Object ro : arrTime) {
objSession = (JSONObject) ro;
sessionName = String.valueOf(objSession.get("sessionID"));
if (!listSession.contains(sessionName)) {
listSession.add(sessionName);
}
}
}
如果您可以使用Java 8,那么您可以使用以下速记实现: 例如:
ArrayList<String> data = new ArrayList<String>(Arrays.asList("A", "A", "A", "B", "B", "B"));
// This will be required if your target SDK < Android N
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
List<String> uniqueData = data.stream().distinct().collect(Collectors.toList()); // Results ["A", "B"]
}
ArrayList data=新的ArrayList(Arrays.asList(“A”、“A”、“A”、“B”、“B”));
//如果您的目标SDK=Build.VERSION\u code.N){
List uniqueData=data.stream().distinct().collect(Collectors.toList());//结果[“A”,“B”]
}
我建议在此处使用一个Set-over-ArrayList。您可以使用ArrayList检查列表是否包含元素并添加它。contains()需要O(n)个时间,因为它在内部维护一个动态数组。其中,作为HashSet或TreeSet可以在O(1)中进行检查,您也不必自己进行比较
Set<String> setSession = new HashSet<String>();
for(int u=1; u < k+1; u++) {
String str = Integer.toString(u);
JSONArray arrTime=(JSONArray)mergedJSON2.get(str);
JSONObject objSession;
StringsessionName;
for (Object ro : arrTime) {
objSession = (JSONObject) ro;
sessionName = String.valueOf(objSession.get("sessionID"));
setSession.add(sessionName);
}
}
Set setSession=new HashSet();
对于(int u=1;u
请为您正在使用的语言添加标记您只想存储唯一的值吗?
Set<String> setSession = new HashSet<String>();
for(int u=1; u < k+1; u++) {
String str = Integer.toString(u);
JSONArray arrTime=(JSONArray)mergedJSON2.get(str);
JSONObject objSession;
StringsessionName;
for (Object ro : arrTime) {
objSession = (JSONObject) ro;
sessionName = String.valueOf(objSession.get("sessionID"));
setSession.add(sessionName);
}
}