java - 将数字插入有序arrayList

标签 java

我有一个有趣的问题,关于如何将任何数字插入有序的 ArrayList。假设用户输入 [12,34,37,60,89]; addListElement() 方法应该遍历数组以找到新元素所在的索引。

用户输入数字50,新数组应该是[12,34,37,50,60,89]。我使用for循环遍历ArrayList,但我不确定我的if()语句。

public void addListElement() {
    System.out.println("Add number to arrayList");
    Scanner scan = new Scanner(System.in);
    int number = scan.nextInt();

    int loc = 0;
    for (int i = 0; i < aryList.size(); i++) {
        if (number > 0 && i < loc) {
            loc++;
        }
    }

    aryList.add(loc, number);
    System.out.println(aryList.toString());
}

最佳答案

试试这个:

int position = Collections.binarySearch(aryList, number);
aryList.add(position < 0 ? -position - 1 : position, number);

编辑感谢您指出如果数字已经存在,旧代码会崩溃

关于java - 将数字插入有序arrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12886762/

相关文章:

java - 累积位运算

Java 任务 setOnSucceded 不起作用

java - 升级到 springframework.scheduling.concurrent?

java - Spring Boot邮件忽略application.properties

java - agora.io 错误访问拒绝找到属性 net.dns2

java - 在 java 中使用字符串格式打印列

java - 如果发生无限递归,如何让递归函数返回 false

java - 如何下载 Maven jar

java - 反转 int 数组

java - 没有 EntityManager 的 detachedcriteria 和 detachedquery