专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 一文了解Java常用算法

一文了解Java常用算法

更新时间:2022-11-24 11:22:44 来源:动力节点 浏览677次

在本教程中,我们将借助示例了解 Java 集合框架提供的不同算法。Java 集合框架提供了多种算法,可用于操作存储在数据结构中的元素。Java 中的算法是静态方法,可用于对集合执行各种操作。由于算法可用于各种集合,因此这些算法也称为通用算法。让我们看看集合框架中可用的不同方法的实现。

1.使用sort()排序

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

import java.util.ArrayList;
import java.util.Collections;
class Main {
    public static void main(String[] args) {
        // Creating an array list
        ArrayList<Integer> numbers = new ArrayList<>();
        // Add elements
        numbers.add(4);
        numbers.add(2);
        numbers.add(3);
        System.out.println("Unsorted ArrayList: " + numbers);
        // Using the sort() method
        Collections.sort(numbers);
        System.out.println("Sorted ArrayList: " + numbers);
    }
}

输出

未排序的数组列表:[4, 2, 3]
排序的数组列表:[2, 3, 4]

这里排序以自然顺序(升序)发生。sort()但是,我们可以使用Comparator 接口自定义方法的排序顺序。

2. 使用 shuffle() 进行洗牌

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

import java.util.ArrayList;
import java.util.Collections;
class Main {
    public static void main(String[] args) {
        // Creating an array list
        ArrayList<Integer> numbers = new ArrayList<>();
        // Add elements
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        System.out.println("Sorted ArrayList: " + numbers);
        // Using the shuffle() method
        Collections.shuffle(numbers);
        System.out.println("ArrayList using shuffle: " + numbers);
    }
}

输出

排序的数组列表:[1, 2, 3]
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) {
        // Creating an ArrayList
        ArrayList<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(2);
        System.out.println("ArrayList1: " + numbers);
        // Using reverse()
        Collections.reverse(numbers);
        System.out.println("Reversed ArrayList1: " + numbers);
        // Using swap()
        Collections.swap(numbers, 0, 1);
        System.out.println("ArrayList1 using swap(): " + numbers);
        ArrayList<Integer> newNumbers = new ArrayList<>();
        // Using addAll
        newNumbers.addAll(numbers);
        System.out.println("ArrayList2 using addAll(): " + newNumbers);
        // Using fill()
        Collections.fill(numbers, 0);
        System.out.println("ArrayList1 using fill(): " + numbers);
        // Using copy()
        Collections.copy(newNumbers, numbers);
        System.out.println("ArrayList2 using copy(): " + newNumbers);
    }
}

输出

ArrayList1: [1, 2]
反转 ArrayList1: [2, 1]
ArrayList1 使用 swap(): [1, 2]
ArrayList2 使用 addALL(): [1, 2]
ArrayList1 使用 fill(): [0, 0]
ArrayList2 使用 copy(): [0, 0]

注意:在执行该copy()方法时,两个列表的大小应该相同。

4. 使用 binarySearch() 搜索

Java 集合框架的binarySearch()方法搜索指定的元素。它返回元素在指定集合中的位置。例如,

import java.util.Collections;
import java.util.ArrayList;
class Main {
    public static void main(String[] args) {
        // Creating an ArrayList
        ArrayList<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        // Using binarySearch()
        int pos = Collections.binarySearch(numbers, 3);
        System.out.println("The position of 3 is " + pos);
    }
}

输出

3的位置是2。

注意:在执行该binarySearch()方法之前应该对集合进行排序。

5.寻找极值

Java 集合框架的min()和max()方法分别用于查找最小和最大元素。例如,

import java.util.Collections;
import java.util.ArrayList;
class Main {
    public static void main(String[] args) {
        // Creating an ArrayList
        ArrayList<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        // Using min()
        int min = Collections.min(numbers);
        System.out.println("Minimum Element: " + min);
        // Using max()
        int max = Collections.max(numbers);
        System.out.println("Maximum Element: " + max);
    }
}

输出

最小元素:1
最大元素:3

以上就是关于“一文了解Java常用算法”的介绍,大家如果感兴趣可以关注动力节点推出的Java算法视频教程,全套免费下载,这是一套超级详细的数据结构与算法基础视频教程,本套视频教程适合数据结构与算法零基础学员学习,且是你学习数据结构与算法的好帮手。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>