当前位置: 首页 > 知识库问答 >
问题:

ArrayList

章德惠
2023-03-14
import java.util.*;
import java.util.Random;

class ArraySorting {
public static void main(String[]args) {

    ArrayList<Integer> arr = new ArrayList<Integer>();

    Random generate = new Random();
    for (int nums = 0; nums < 20; nums++) {
      int randomnumbers = generate.nextInt(50);
      arr.add(randomnumbers);
    }

    System.out.println("First list of 20 generated numbers: ");
    System.out.println(arr);
    System.out.println("");

    int dupe = 0; 

    for (int n = 0; n < arr.size(); n++) {
        Integer check1 = arr.get(n); 

        for (int n2 = n+1; n2 < arr.size(); n2++) { 
            Integer check2 = arr.get(n2); 

            //remove second num if two numbers akike
            if (check1.equals(check2)) {
                arr.remove(check2);
                n2 = n2-1;
                dupe = 1; 

            }
        }
        n = n-dupe;
        dupe = 0;
    }

    System.out.println("Duplicates: " + (20 - arr.size()));

    for (int n3 = arr.size(); n3 < 20; ++n3) {
        int randomnumbers = generate.nextInt(50);
        arr.add(randomnumbers);

        //check for duplicates again
        for (int n = 0; n < arr.size(); n++) {
            Integer check1 = arr.get(n); 

            for (int n2 = n+1; n2 < arr.size(); n2++) { 
                Integer check2 = arr.get(n2); 

                if (check1.equals(check2)) {
                    arr.remove(check2);
                    n2 = n2-1;
                    dupe = 1; 
                }
            }
            n = n - dupe;
            dupe = 0;
        }
    }

    //before sort
    System.out.println(arr);
    System.out.println("");

    for(int a=0; a<20; a++){
        for (int b = 0; b < 19; b++) {
            if(arr[b] > arr[b+1]){
                int temporary = arr[b];
                arr[b] = arr[b+1];
                arr[b+1] = temporary;
            }
        }
    }

    System.out.println("\nSorted Array:\n");
    for (int a = 0; a < 20; a++) {
        System.out.println("Array [" + a + "]: " + arr[a]);
    }


}

}

有人能告诉我我在这个问题上做错了什么吗,我似乎不能生成最后一部分。ArrayList arr=new ArrayList();不应该与arr[b]工作的最后一部分运行相同吗?我是新来的Java所以如果简单的解释/隐喻能提供解决方案,我会非常感激。

P、 S:我不打算使用像Collection这样的库排序功能,我需要使用最后一部分中的排序方法。

共有2个答案

施文彬
2023-03-14

您遇到的问题是,您试图在排序之前删除重复项。首先,对整数、重复项和所有项进行排序,然后删除重复项。

import java.util.ArrayList;
import java.util.Random;

public class ArraySorting {
    public static void main(String[]args) {

        ArrayList<Integer> arr = new ArrayList<Integer>();

        Random generate = new Random();
        for (int nums = 0; nums < 20; nums++) {
            int randomnumbers = generate.nextInt(10);
            arr.add(randomnumbers);
        }

        System.out.println("First list of 20 generated numbers: ");
        System.out.println(arr);
        System.out.println("");

        // SORT YOUR LIST FIRST
        bubbleSort(arr);
        System.out.println(arr);

        // NOW YOU CAN REMOVE YOUR DUPLICATES
        removeDuplicates(arr);
        System.out.println(arr);
    }

    public static void bubbleSort(ArrayList<Integer> list){
        for(int i = 0; i < list.size(); i++) {
            for(int j = 1; j < (list.size() -i); j++) {
                if(list.get(j - 1) > list.get(j)) {
                    int temp = list.get(j-1);
                    list.set(j-1, list.get(j));
                    list.set(j, temp);
                }                   
            }
        }       
    }

    public static void removeDuplicates(ArrayList<Integer> list){
        for(int i = 0; i < list.size(); i++) {
            if(i < list.size()-1) {
                int prev = list.get(i);
                int curr = list.get(i + 1);

                if(curr == prev) {
                    list.remove(list.get(i + 1));
                    i--;
                }
            }   
        }
    }   
}

输出

First list of 20 generated numbers: 
[9, 2, 2, 1, 3, 4, 0, 9, 5, 2, 5, 7, 4, 9, 0, 4, 0, 6, 6, 6]

[0, 0, 0, 1, 2, 2, 2, 3, 4, 4, 4, 5, 5, 6, 6, 6, 7, 9, 9, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 9]
袁良弼
2023-03-14

arr[a]是访问数组元素的语法。对于数组列表,使用arr.get(a)。为了给数组列表赋值,可以使用arr.set(b,value)。不能使用赋值运算符。

 类似资料:
  • 问题内容: 以下代码输出 但是,我期望的是 我哪里错了? 问题答案: 您将两次向同一内部引用添加到外部列表。因此,当您更改内部列表时(通过添加300),您会在“两个”内部列表中看到它(实际上,只有一个内部列表,外部列表中存储了两个引用)。 为了获得理想的结果,您应该创建一个新的内部列表:

  • 问题内容: 刚开始使用C ++并尝试转换我最近编写的简单Java程序。 与C ++中的Java ArrayList等效的首选含义是什么? 问题答案: 使用标准库中的类。

  • 问题内容: 到目前为止,我已经看到许多可拆分的示例,但是由于某种原因,当它变得更加复杂时,我无法使其正常工作。我有一个Movie对象,该对象实现了Parcelable。本书对象包含一些属性,例如ArrayLists。执行ReadTypedList时,运行我的应用程序会导致NullPointerException!我真的不在这里 评论类: 如果有人能让我走上正确的道路,我将不胜感激,我已经花了很多时

  • 问题内容: 我有一个使用以下实现的基于json的REST Web服务:使用Jackson的Jetty,Jersey,Jersey-JSON。 我的方法之一收到一个Person实例,该实例的字段类型为。即: 如果我使用名称数组来调用它,一切正常!例如: 但是,如果该人只有一个名字,我的客户会创建一个值元素,例如: 当我尝试使用单个值调用服务时,出现异常: 题: 我应该如何创建/配置Web服务,以便在

  • 问题内容: 为了保存一个由一个成员完成的付款的ArrayList,我想将“付款列表ID”更改为一个字符串,因此我创建了以下方法: 但是我收到以下警告: 谁能解释我为什么? 问题答案: 您绝对应该阅读有关Java泛型的本教程 :http : //docs.oracle.com/javase/tutorial/java/generics/ 简而言之: 许多Java类和类型(称为 泛型类 或 泛型类型

  • 问题内容: 我需要添加一个可以列出an元素的位置,并且我发现有一种更新更好的显示列表的方法- 。 我的问题是如何在我的应用程序中实现这一点。我发现我需要使用,但是我不太了解如何正确实现整个过程。 如果你想知道,我指的是这个的文档的例子,这是我一直在读。 编辑: 更新我的代码后,它说它无法解析该符号: 所以我以为我把它放错了地方(很可能),实际上我把它放到Adapter类的末尾,就在Method之后

  • 问题内容: 我看到了ArrayList的Java文档,发现ArrayList的初始容量为10。 我认为这是2的幂是有道理的,但为什么是10? 我还检查了HashMap的初始容量,这是16,这很有意义。 数字10后面是否有具体原因? 问题答案: 这是简单的增长数组。当尝试添加元素并且超出缓冲区大小时,它只是在增长。因此,初始大小可以是任何正值。 1将太少。即使有一些元素,我们也会有一些调整大小的操作

  • 问题内容: 我想向中添加一个对象,但是每次我向具有3个属性的新对象添加时,都会出现错误。 在这里,我正在尝试创建其对象并将其传递给的类。 问题答案: 创建对象时需要使用运算符 要不然 并且您的构造函数不应包含。否则它将成为您班上的一个方法。