Java 反转数组列表

Java 反转数组列表

假设你已经通过了java中的arraylist并了解了arraylist。这篇文章包含了反转数组列表的不同例子,如下所示:
1.通过编写我们自己的函数( 使用额外的空间 ): RevArrayList类中的reverseArrayList()方法包含用整数对象反转数组的逻辑。该方法以一个数组为参数,按相反的顺序遍历,并将所有的元素添加到新创建的数组中。最后返回反转的数组列表。

// Java program for reversing an arraylist
import java.io.*;
import java.util.*;
class RevArrayList {
 
    // Takes an arraylist as a parameter and returns
    // a reversed arraylist
    public ArrayList<Integer> reverseArrayList(ArrayList<Integer> alist)
    {
        // Arraylist for storing reversed elements
        ArrayList<Integer> revArrayList = new ArrayList<Integer>();
        for (int i = alist.size() - 1; i >= 0; i--) {
 
            // Append the elements in reverse order
            revArrayList.add(alist.get(i));
        }
 
        // Return the reversed arraylist
        return revArrayList;
    }
 
    // Iterate through all the elements and print
    public void printElements(ArrayList<Integer> alist)
    {
        for (int i = 0; i < alist.size(); i++) {
            System.out.print(alist.get(i) + " ");
        }
    }
}
 
public class GFG {
    public static void main(String[] args)
    {
        RevArrayList obj = new RevArrayList();
 
        // Declaring arraylist without any initial size
        ArrayList<Integer> arrayli = new ArrayList<Integer>();
 
        // Appending elements at the end of the list
        arrayli.add(new Integer(1));
        arrayli.add(new Integer(2));
        arrayli.add(new Integer(3));
        arrayli.add(new Integer(4));
        System.out.print("Elements before reversing:");
        obj.printElements(arrayli);
        arrayli = obj.reverseArrayList(arrayli);
        System.out.print("\nElements after reversing:");
        obj.printElements(arrayli);
    }
}

输出

Elements before reversing:1 2 3 4 
Elements after reversing:4 3 2 1

1.通过编写我们自己的函数( 不使用额外的空间 ): 在前面的例子中,另外使用了一个数组来存储所有反转的元素,这需要更多的空间。为了避免这种情况,可以使用同一个数组表来进行反转。
逻辑:
1.循环运行n/2次,其中’n’是数组表中的元素数量。
2.在第一遍中,交换第一个和第n个元素
3.在第二遍中,交换第二个和(n-1)个元素,以此类推,直到到达数组列表的中间。
4.循环结束后返回数组列表。

// Java program for reversing an arraylist
import java.io.*;
import java.util.*;
class RevArrayList {
 
    // Takes an arraylist as a parameter and returns
    // a reversed arraylist
    public ArrayList<Integer> reverseArrayList(ArrayList<Integer> alist)
    {
        // Arraylist for storing reversed elements
        // this.revArrayList = alist;
        for (int i = 0; i < alist.size() / 2; i++) {
            Integer temp = alist.get(i);
            alist.set(i, alist.get(alist.size() - i - 1));
            alist.set(alist.size() - i - 1, temp);
        }
 
        // Return the reversed arraylist
        return alist;
    }
 
    // Iterate through all the elements and print
    public void printElements(ArrayList<Integer> alist)
    {
        for (int i = 0; i < alist.size(); i++) {
            System.out.print(alist.get(i) + " ");
        }
    }
}
 
public class GFG1 {
    public static void main(String[] args)
    {
        RevArrayList obj = new RevArrayList();
 
        // Declaring arraylist without any initial size
        ArrayList<Integer> arrayli = new ArrayList<Integer>();
 
        // Appending elements at the end of the list
        arrayli.add(new Integer(12));
        arrayli.add(new Integer(13));
        arrayli.add(new Integer(123));
        arrayli.add(new Integer(54));
        arrayli.add(new Integer(1));
        System.out.print("Elements before reversing: ");
        obj.printElements(arrayli);
        arrayli = obj.reverseArrayList(arrayli);
        System.out.print("\nElements after reversing: ");
        obj.printElements(arrayli);
    }
}

输出

Elements before reversing: 12 13 123 54 1 
Elements after reversing: 1 54 123 13 12

2.通过使用Collections类: Collections是java.util包中的一个类,它包含各种静态方法,用于搜索、排序、反转、查找最大值、min….等。我们可以利用内置的Collections.reverse()方法来反转一个数组列表。它接受一个列表作为输入参数,并返回反转的列表。

// Java program for reversing an arraylist
import java.io.*;
import java.util.*;
 
public class GFG2 {
    public static void main(String[] args)
    {
        // Declaring arraylist without any initial size
        ArrayList<Integer> arrayli = new ArrayList<Integer>();
 
        // Appending elements at the end of the list
        arrayli.add(new Integer(9));
        arrayli.add(new Integer(145));
        arrayli.add(new Integer(878));
        arrayli.add(new Integer(343));
        arrayli.add(new Integer(5));
        System.out.print("Elements before reversing: ");
        printElements(arrayli);
 
        // Collections.reverse method takes a list as a
        // parameter and reverses the passed parameter
      //(no new array list is required)
        Collections.reverse(arrayli);
        System.out.print("\nElements after reversing: ");
        printElements(arrayli);
    }
 
    // Iterate through all the elements and print
    public static void printElements(ArrayList<Integer> alist)
    {
        for (int i = 0; i < alist.size(); i++) {
            System.out.print(alist.get(i) + " ");
        }
    }
}

输出

Elements before reversing: 9 145 878 343 5 
Elements after reversing: 5 343 878 145 9

3.反转用户定义对象的数组: 创建了一个Employee类,用于创建用户定义的对象,EmployeeID、EmployeeName、DepartmentName为类变量,在构造函数中被初始化。我们创建了一个数组,只接受Employee(用户定义)对象。这些对象通过add()方法被添加到数组中。使用集合类中内置的reverse()方法将数组列表反转。
printElements()静态方法的使用只是为了避免在程序中多写一个类。

// Java program for reversing an arraylist
import java.io.*;
import java.util.*;
class Employee {
    int empID;
    String empName;
    String deptName;
 
    // Constructor for initializing the class variables
    public Employee(int empID, String empName, String deptName)
    {
        this.empID = empID;
        this.empName = empName;
        this.deptName = deptName;
    }
}
 
public class GFG3 {
    public static void main(String[] args)
    {
        // Declaring arraylist without any initial size
        ArrayList<Employee> arrayli = new ArrayList<Employee>();
 
        // Creating user defined objects
        Employee emp1 = new Employee(123, "Rama", "Facilities");
        Employee emp2 = new Employee(124, "Lakshman", "Transport");
        Employee emp3 = new Employee(125, "Ravan", "Packing");
 
        // Appending all the objects for arraylist
        arrayli.add(emp1);
        arrayli.add(emp2);
        arrayli.add(emp3);
 
        System.out.print("Elements before reversing: ");
        printElements(arrayli);
 
        // Collections.reverse method takes a list as a
        // parameter and reverse the list
        Collections.reverse(arrayli);
        System.out.print("\nElements after reversing: ");
        printElements(arrayli);
    }
 
    // Iterate through all the elements and print
    public static void printElements(ArrayList<Employee> alist)
    {
        for (int i = 0; i < alist.size(); i++) {
            System.out.print("\n EmpID:" + alist.get(i).empID + 
            ", EmpName:" + alist.get(i).empName + ", Department:" +
                                          alist.get(i).deptName);
        }
    }
}

输出

Elements before reversing: 
 EmpID:123, EmpName:Rama, Department:Facilities
 EmpID:124, EmpName:Lakshman, Department:Transport
 EmpID:125, EmpName:Ravan, Department:Packing
Elements after reversing: 
 EmpID:125, EmpName:Ravan, Department:Packing
 EmpID:124, EmpName:Lakshman, Department:Transport
 EmpID:123, EmpName:Rama, Department:Facilities

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程