方法·一
public class Test {
public static void main(String[] args) {
Random random = new Random();
int[] arr = new int[20];
for (int i = 0; i < 20; i++) {
arr[i] = random.nextInt(10);
System.out.print(arr[i] + ",");
}
System.out.println();
//输出arr数组中重复元素,重复数量
Map<Integer,Integer> map = findRepeat(arr);
if(map!=null){
for (Map.Entry<Integer,Integer> entry : map.entrySet()){
if(entry.getValue()>1){
System.out.println("元素 "+entry.getKey()+" 重复出现"+entry.getValue()+"次");
}else{
System.out.println("元素 "+entry.getKey()+" 只出现1次 无重复");
}
}
}
}
//判断方法
private static Map<Integer, Integer> findRepeat(int[] arr){
Map<Integer, Integer> map = new HashMap<>();
if(arr == null || arr.length <= 0){
return null;
}
for(int i = 0; i < arr.length; i ++){
if(map.containsKey(arr[i])){
map.put(arr[i], map.get(arr[i])+1);
}else{
map.put(arr[i], 1);
}
}
return map;
}
}
方法二
public class Test {
public static void main(String[] args) {
Random random = new Random();
int[] arr = new int[20];
for (int i = 0; i < 20; i++) {
arr[i] = random.nextInt(10);
System.out.print(arr[i] + ",");
}
System.out.println();
//输出arr数组中重复元素,重复数量
findRepeat(arr);
}
public static void findRepeat(int [] arr){
List<Integer> resultList = Arrays.stream(arr).boxed().collect(Collectors.toList());
while(resultList.size() > 0){
int k = resultList.get(0);
int num = 0;
Iterator<Integer> it = resultList.iterator();
while(it.hasNext()){
int x = it.next();
if(x == k){
num++;
it.remove();
}
}
if(num>1){
System.out.println("元素 "+k+" 重复出现"+num+"次");
}else{
System.out.println("元素 "+k+" 只出现1次 无重复");
}
}
}
}
方法三
纯纯的数组形式
public class Test {
public static void main(String[] args) {
Random random = new Random();
int[] arr = new int[20];
for (int i = 0; i < 20; i++) {
arr[i] = random.nextInt(10);
System.out.print(arr[i] + ",");
}
System.out.println();
//输出arr数组中重复元素,重复数量
newMethod(arr);
}
public static void newMethod(int []arr)
{
int rec = arr.length;
while(rec>0){
int k = arr[0];
int num = 0;
for(int j = 0;j<rec;j++){
if(k == arr[j])
{
num++;//相同元素加一
//删除元素
rec = delElement(j,arr,rec);
j--;//删除之后元素前移一个位置
}
}
if(num>1){
System.out.println("元素 "+k+" 重复出现"+num+"次");
}else{
System.out.println("元素 "+k+" 只出现1次 无重复");
}
}
}
//删除某一位置的元素
public static int delElement(int a,int arr [],int rec){
if (a < 0 || a >= rec) {
throw new RuntimeException("越界");
}
for(int i = a;i < rec-1;i++)
{
arr[i] = arr[i+1];
}
return rec-1;
}
}
今天接近一天的经历2020年4月11日晚22:01