Java 如何找到LinkedHashSet中的最小或最大元素
LinkedHashSet是Java Collection Framework的一个类,它实现了Set接口并扩展了HashSet类。它是一个链表类型的集合类。它按照插入顺序存储和返回对象。从LinkedHashSet集合中查找最大和最小元素是一个经常在考试和面试中被问到的常见任务之一。在本文中,我们将探讨几种执行给定任务的方法。
从LinkedHashSet中获取最小和最大元素的程序
为了从LinkedHashSet集合中找到最大和最小元素,我们将使用以下方式:
- 通过迭代LinkedHashSet
-
通过将LinkedHashSet转换成TreeSet
-
通过使用min()和max()方法
让我们一一讨论它们。
使用迭代
借助于for-each循环,我们可以迭代LinkedHashSet集合的元素来获取最大和最小元素。
示例1
下面的示例演示了使用for-each循环在LinkedHashSet中查找最大和最小元素的实际实现。
方法
- 我们的第一步是导入’java.util’包,以便我们可以使用LinkedHashSet类的功能。
-
然后,创建一个LinkedHashSet集合,使用内置方法’add()’存储几个元素。
-
初始化两个Integer类型变量,用于存储最大和最小元素。
-
现在,创建一个for-each循环,并在其中定义两个if块。第一个if块将检查最小元素,第二个if块将检查最大元素。
-
最后,打印结果并退出。
import java.util.*;
public class MinMax {
public static void main(String[] args) {
// Creating a LinkedHashSet
LinkedHashSet<Integer> lHset = new LinkedHashSet<>();
// Adding elements to the set
lHset.add(57);
lHset.add(68);
lHset.add(79);
lHset.add(88);
lHset.add(95);
// to store the maximum and minimum element
Integer minElem = null;
Integer maxElem = null;
// using for-each loop to find minimum and maximum elements
for (Integer element : lHset) {
// checking minimum element
if (minElem == null || element < minElem) {
minElem = element;
}
// checking maximum element
if (maxElem == null || element> maxElem) {
maxElem = element;
}
}
System.out.println("List of elements from LinkedHashSet: " + lHset);
System.out.println("The Minimum element from LinkedHashSet: " + minElem);
System.out.println("The Maximum element from LinkedHashSet: " + maxElem);
}
}
输出
List of elements from LinkedHashSet: [57, 68, 79, 88, 95]
The Minimum element from LinkedHashSet: 57
The Maximum element from LinkedHashSet: 95
使用TreeSet
TreeSet也是Java集合框架的一个类,它实现了NavigableSet接口。它将集合的元素存储在树结构中,并且以排序的方式存储,这使得它成为从LinkedHashSet中检索最大和最小元素的最佳选择。
示例2
在下面的示例中,我们将使用TreeSet从LinkedHashSet中获取最小和最大元素。
方法
- 按照前面示例的前两个步骤进行操作。
-
然后,将LinkedHashSet集合转换为TreeSet,这样第一个元素就变成了最小元素,而最后一个元素就变成了最大元素。
-
现在,使用内置的方法’first()’来获取最小元素,使用’last()’来获取最大元素。
import java.util.*;
public class MinMax {
public static void main(String[] args) {
// Creating a LinkedHashSet
LinkedHashSet<Integer> lHset = new LinkedHashSet<>();
// Adding elements to the set
lHset.add(57);
lHset.add(68);
lHset.add(79);
lHset.add(88);
lHset.add(95);
System.out.println("List of elements from LinkedHashSet: " + lHset);
// converting LinkedHashSet to TreeSet
TreeSet<Integer> newTree = new TreeSet<>(lHset);
// getting the minimum element
System.out.println("The Minimum element from LinkedHashSet: " + newTree.first());
// getting the maximum element
System.out.println("The Maximum element from LinkedHashSet: " + newTree.last());
}
}
输出
List of elements from LinkedHashSet: [57, 68, 79, 88, 95]
The Minimum element from LinkedHashSet: 57
The Maximum element from LinkedHashSet: 95
使用min()和max()方法
从LinkedHashSet获取最小值和最大值的一个朴素的方法是使用内置的’min()’和’max()’方法。’min()’方法返回LinkedHashSet中的最小元素,’max()’方法返回最大元素。请注意,这两个方法都是与’Collections’一起使用的。
示例3
在下面的示例中,我们将使用’min()’和’max()’方法来查找LinkedHashSet的最小和最大元素,而不是进行迭代和转换LinkedHashSet集合。
import java.util.*;
public class MinMax {
public static void main(String[] args) {
// Creating a LinkedHashSet
LinkedHashSet<Integer> lHset = new LinkedHashSet<>();
// Adding elements to the set
lHset.add(57);
lHset.add(68);
lHset.add(79);
lHset.add(88);
lHset.add(95);
System.out.println("List of elements from LinkedHashSet: " +
lHset);
// getting the minimum element
System.out.println("The Minimum element from LinkedHashSet: " +
Collections.min(lHset));
// getting the maximum element
System.out.println("The Maximum element from LinkedHashSet: " +
Collections.max(lHset));
}
}
输出
List of elements from LinkedHashSet: [57, 68, 79, 88, 95]
The Minimum element from LinkedHashSet: 57
The Maximum element from LinkedHashSet: 95
结论
我们首先介绍了LinkedHashSet,然后在下一部分讨论了从LinkedHashSet中找到最小和最大元素的三种方法。此外,我们还了解到了TreeSet的基础知识以及Java集合框架中的一些内置方法,包括’min()’、’max()’、’first()’和’last()’。