Skip to content

Java算法

Java集合框架提供了各种算法,用于操作存储在数据结构中的元素。

Java中的算法是可以用于执行集合上各种操作的静态方法。

由于算法可以用于各种集合上,因此这些也被称为通用算法

让我们看看集合框架中可用的不同方法的实现。


1. 使用sort()进行排序

集合框架提供的sort()方法用于对元素进行排序。例如,

import java.util.ArrayList;
import java.util.Collections;

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

        // 创建一个数组列表
        ArrayList<Integer> numbers = new ArrayList<>();

        // 添加元素
        numbers.add(4);
        numbers.add(2);
        numbers.add(3);
        System.out.println("未排序的ArrayList: " + numbers);

        // 使用sort()方法
        Collections.sort(numbers);
        System.out.println("排序后的ArrayList: " + numbers);

    }
}

输出

未排序的ArrayList: [4, 2, 3]
排序后的ArrayList: [2, 3, 4]

这里的排序是按自然顺序(升序)进行的。但是,我们可以使用_比较器接口_来自定义sort()方法的排序顺序。

了解更多信息,请访问Java排序


2. 使用shuffle()进行洗牌

Java集合框架的shuffle()方法用于破坏数据结构中存在的任何顺序。它与排序相反。例如,

import java.util.ArrayList;
import java.util.Collections;

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

        // 创建一个数组列表
        ArrayList<Integer> numbers = new ArrayList<>();

        // 添加元素
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        System.out.println("排序后的ArrayList: " + numbers);

        // 使用shuffle()方法
        Collections.shuffle(numbers);
        System.out.println("使用shuffle的ArrayList: " + numbers);

    }
}

输出

排序后的ArrayList: [1, 2, 3]
使用shuffle的ArrayList: [2, 1, 3]

当我们运行程序时,shuffle()方法将返回随机输出。

洗牌算法主要在需要随机输出的游戏中使用。


3. 常规数据操作

在Java中,集合框架提供了可以用于操作数据的不同方法。

  • reverse() - 反转元素的顺序
  • fill() - 将集合中的每个元素替换为指定的值
  • copy() - 将源集合中的元素复制到目标集合中
  • swap() - 交换集合中两个元素的位置
  • addAll() - 将一个集合的所有元素添加到另一个集合中

例如,

import java.util.Collections;
import java.util.ArrayList;

class Main {
    public static void main(String[] args) {
        // 创建一个ArrayList
        ArrayList<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(2);
        System.out.println("ArrayList1: " + numbers);

        // 使用reverse()
        Collections.reverse(numbers);
        System.out.println("反转后的ArrayList1: " + numbers);

        // 使用swap()
        Collections.swap(numbers, 0, 1);
        System.out.println("使用swap()的ArrayList1: " + numbers);

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

        // 使用addAll()
        newNumbers.addAll(numbers);
        System.out.println("使用addAll()的ArrayList2: " + newNumbers);

        // 使用fill()
        Collections.fill(numbers, 0);
        System.out.println("使用fill()的ArrayList1: " + numbers);

        // 使用copy()
        Collections.copy(newNumbers, numbers);
        System.out.println("使用copy()的ArrayList2: " + newNumbers);
    }
}

输出

ArrayList1: [1, 2]