使用 Arrays.sort() 按升序或降序对数组进行排序
来源:
FreeCodeCamp 通过这篇文章,您将学习如何在 Java 中按升序或降序对数组进行排序。
在Java中,我们使用数组将一组变量(具有相同数据类型)存储在单个变量中。但有时数组中存储的值会以随机顺序出现。
感谢 Java 中的Arrays类,我们有多种方法来操作数组,包括对数组进行排序。
我们将使用Arrays类中的方法之一是
sort()方法,该方法按升序对数组进行排序。要按降序对数组进行排序,请使用Java中
Collections类的
reverseOrder()方法。
如何使用 Arrays.sort() 在 Java 中对数组进行升序排序
下面是我们如何使用sort()方法对数组进行升序排序 的示例。
import java.util.Arrays;
class ArraySort {
public static void main(String[] args) {
int[] arr = { 5, 2, 1, 8, 10 };
Arrays.sort(arr);
for (int values : arr) {
System.out.print(values + ", ");
}
}
}
在上面的示例中,我们做的第一件事是导入
Arrays类:
import java.util.Arrays; 。
这使我们可以访问Arrays类的所有方法。然后我们创建了一个包含随机顺序的数字的数组:
int[] arr = { 5, 2, 1, 8, 10 }; 。为了按升序对该数组进行排序,我们将数组作为参数传递给
sort()方法:
Arrays.sort(arr); 。请注意,在使用点表示法访问
sort()方法之前,首先编写
Arrays类。最后,我们创建了一个循环并将数组打印到控制台。结果是一个排序数组:
1, 2, 5, 8, 10。现在我们来讨论一下按降序对数组进行排序。
如何使用 Collections.reverseOrder() 在 Java 中对数组进行降序排序
要按降序对数组进行排序,您应该使用
reverseOrder() ,它可以从Collections类访问。我们仍然会使用
Arrays.sort(); ,但在本例中它将采用两个参数 - 一个要排序的数组和
Collections.reverseOrder()。
import java.util.Arrays;
import java.util.Collections;
class ArraySort {
public static void main(String[] args) {
Integer[] arr = { 5, 2, 1, 8, 10 };
Arrays.sort(arr, Collections.reverseOrder());
for (int values : arr) {
System.out.print(values + ", ");
}
}
}
我们做的第一件事是导入
Arrays和
Collections类,因为我们将使用这些类提供的方法。然后我们以随机顺序创建一个数字数组:
Integer[] arr = { 5, 2, 1, 8, 10 }; 。正如您所看到的,我们使用
Integer[]而不是前面示例中的
int[] 。否则会出现错误。为了按降序对数组进行排序,我们这样做了:
Arrays.sort(arr, Collections.reverseOrder()); 。第一个参数是一个数组
arr,它将按升序排序。第二个参数
Collections.reverseOrder()将反转已排序数组的顺序,使其按降序排列。循环并打印时,数组将如下所示:
10, 8, 5, 2, 1。
结论
在本文中,我们讨论了 Java 中的数组排序 - 如何按升序或降序对它们进行排序。为此,我们可以使用
sort()方法,该方法可以从Arrays类访问。
sort()方法采用一个要排序的数组作为参数。为了按降序对数组进行排序,我们使用了Collections 类提供的
reverseOrder()方法。它作为第二个参数传递给
sort()方法,以便排序后的数组可以按降序重新排序。
Java 集合。List 和 Set 接口有什么区别?
来源:
Rrtutors List 和 Set 是扩展
Collection接口的 Java 接口。在这篇文章中,我们将了解两者之间的主要区别以及如何使用它们。
Java中Set和List接口的区别
让我们根据以下关键参数来 定义
List和
Set接口之间的主要区别:
执行
List实现
ArrayLists,而
HashSet实现
Set。
索引
您可以使用
ListIterator在List中向前和向后移动,但不能在
Set中移动。请改用 Iterator (它适用于
List和
Set)。
命令
Set接口不支持任何特定的设置顺序。
Set类型的集合已经按照自己的规则排序了,不能这样排序。
列表是一个有序列表。对象按照添加到列表中的顺序存储。列表元素通过索引访问。
空对象
List没有任何限制,支持添加Null值,而
Set最多允许添加一个Null值。
重复项
List可以包含重复项,但
Set不能。Set 不允许重复元素,因为它的所有元素都必须是唯一的。如果将重复元素插入
Set中,现有值将被覆盖。
什么时候应该使用 List 和 Set?
当您只需要存储唯一值时, Set是最佳选择,因为这就是它的设计目的。但如果你想在重复的情况下保留插入顺序,
List是最好的选择。
示例集
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class ListExample {
public static void main(String[] args) {
List<String> al = new ArrayList<String>();
al.add("Rohit");
al.add("Panjab");
al.add("Kamir");
System.out.println("My ArrayList Items: ");
System.out.print(al);
List<String> ll = new LinkedList<String>();
ll.add("Shobit");
ll.add("Raul");
ll.add("Ketel");
System.out.println("\n My LinkedList Items: ");
System.out.print(ll);
}
}
示例列表
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;
public class SetExample {
public static void main(String[] args) {
int myList[] = {60, 70, 80, 40 };
Set<Integer> dispSet = new HashSet<Integer>();
try{
for(int i = 0; i<4; i++){
dispSet.add(myList[i]);
}
System.out.println(dispSet);
TreeSet<Integer> treeset = new TreeSet<Integer>(dispSet);
System.out.println("Sorting in Asceding order:");
System.out.println(treeset);
}
catch(Exception e){
e.printStackTrace();
}
}
}
GO TO FULL VERSION