JAVA同集合怎样比较?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA同集合怎样比较?相关的知识,希望对你有一定的参考价值。
JAVA同集合中怎样比较相邻两个元素?
例如:集合a有1,5,7,9 2,4,5,9 ,2,3,5,7 2,3,5,7 2,6,7,9 4,6,8,9 2,3,5,7 2,6,7,9 2,6,7,9九个数组。
比较后为:1,5,7,9 2,4,5,9 2,3,5,7 2,6,7,9 4,6,8,9 2,3,5,7 2,6,7,9 七个数组。再查间隔多少个数组。1,5,7,9后面没有,就是6个。2,3,5,7中间有2个,就是2!
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
public class Test
public static void main(String[] args)
List list = Arrays.asList("1,5,7,9","2,4,5,9","2,3,5,7","2,3,5,7","2,6,7,9","4,6,8,9","2,3,5,7","2,6,7,9","2,6,7,9");
list.sort(new Comparator()
@Override
public int compare(Object o1, Object o2)
return o1.toString().compareTo(o2.toString());
);
System.out.println(list);
final int[] m = 0;
list.stream().reduce((a,b)->
if(a.equals(b))
m[0]++;
else
System.out.print("间隔"+m[0]+":"+a+"\t");
m[0]=0;
return b;
);
System.out.println("间隔"+m[0]+":"+list.get(list.size()-1));
JAVA同集合中怎样比较相邻两个元素? 例如:集合a有1,5,7,9 2,4,5,9 ,2,3,5
JAVA同集合中怎样比较相邻两个元素?
例如:集合a有1,5,7,9 2,4,5,9 ,2,3,5,7 2,3,5,7 2,6,7,9 4,6,8,9 2,3,5,7 2,6,7,9 2,6,7,9九个数组。
比较后为:1,5,7,9 2,4,5,9 2,3,5,7 2,6,7,9 4,6,8,9 2,3,5,7 2,6,7,9 七个数组。再查间隔多少个数组。1,5,7,9后面没有,就是6个。2,3,5,7中间有2个,就是2。
关于这个问题很简单,只需要一个循环遍历就行,假如有n个元素,就会有n-1个结果啊,将相邻的两个数挨个比较,就是将一个数组(集合)挨个循环遍历一遍就好了,然后把这结果用-1,0,1表示,用数组装起来,就ok了。
代码如下:
public static void main(String[] args)
int data[] = 1,5,7,9,2,4,5,9,2,3,5;
for (int i = 0; i < data.length-1; i++)
if(data[i] > data[i+1])
//前大于后
System.out.println(1);
else if(data[i] < data[i+1])
//前小于后
System.out.println(-1);
else
//相等
System.out.println(0);
运行结果:
参考技术A操作类Controls.java
package com.kangyong.demo10;
import java.util.Arrays;
import java.util.LinkedList;
public class Controls
/*
参数:集合,索引
返回值:int,与第index个元素相等的,下一个元素,之间的距离。起个名:相邻值
*/
public static int getDistance(LinkedList<Integer[]> nums,int index)
int distance=0;
for (int i = 1; i < nums.size()-index; i++)
//指定元素
String a = Arrays.toString(nums.get(index));
//被查元素
String b = Arrays.toString(nums.get(index+i));
if(a.equals(b))
return distance;
distance++;
return distance;
/*
删除整个集合中,所有相邻值=0的其中一个元素
*/
public static void removeZero(LinkedList<Integer[]> nums)
for (int i = 0; i < nums.size()-1 ; i++)
//如果相邻值0则删除当前元素
if(getDistance(nums,i)==0)
nums.remove(i);
//然后重新遍历
i=0;
使用类ListTest.java
package com.kangyong.demo10;
import java.util.Arrays;
import java.util.LinkedList;
public class ListTest
public static void main(String[] args)
//创建集合
LinkedList<Integer[]> list = new LinkedList();
//创建数组
Integer[][] a = 1,5,7,9 ,2,4,5,9, 2,3,5,7,2,3,5,7,2,6,7,9,4,6,8,9,4,6,8,9,2,3,5,7,2,6,7,9,2,6,7,9;
//放入集合
for (int i = 0; i < a.length; i++)
list.add(a[i]);
//删除操作
Controls.removeZero(list);
System.out.println("遍历筛选后结果");
for (Integer[] integers : list)
System.out.println(Arrays.toString(integers));
System.out.println("==================");
//计算第一个元素距离下一个相同元素相邻值
int re = Controls.getDistance(list,0);
System.out.println(re);
System.out.println("==================");
//遍历所有元素相邻值
for (int i = 0; i < list.size(); i++)
int result = Controls.getDistance(list,i);
System.out.print("数组"+Arrays.toString(list.get(i))+"相邻值 = ");
System.out.println(result);
输出结果:
本回答被提问者采纳 参考技术B 看题意,第一轮循环是要去重,即相邻两个元素去掉一个,那么可以用迭代器iterator比较前后元素,一致则使用remove方法删除元素,第二个是求每个元素在后面出现相同时,中间位数,两层循环解决,即依次比较,下标想减。以上是关于JAVA同集合怎样比较?的主要内容,如果未能解决你的问题,请参考以下文章