JavaRush /Java 博客 /Random-ZH /喝咖啡休息#209。在 Java 列表中查找重复项的 4 种方法。如何使用 Java 创建简单的媒体播放器

喝咖啡休息#209。在 Java 列表中查找重复项的 4 种方法。如何使用 Java 创建简单的媒体播放器

已在 Random-ZH 群组中发布

在 Java 列表中查找重复项的 4 种方法

来源: Codippa 本文介绍了在列表中查找重复项的各种方法。我们将出现多次的元素称为重复元素。 喝咖啡休息#209。 在 Java 列表中查找重复项的 4 种方法。 如何使用 Java 创建一个简单的媒体播放器 - 1

1. 使用集合

下面是使用Set查找 Java List中重复元素的算法。
  • 我们创建一个新的 Java Set对象和一个新的ArrayList来存储重复元素。
  • 我们对列表执行迭代或循环。
  • 我们使用add()方法将列表中的每个元素添加到Set中。
  • 因此,如果添加了该元素,则add()返回true ;如果该元素已存在于Set中,则返回false
  • 如果该元素已在Set中,则它是重复的。然后我们将其添加到ArrayList中。
  • 迭代结束时,新的ArrayList将包含原始 List ( List )中的所有重复元素。
基于该算法的示例程序如下所示。
List<Integer> numbers = List.of(1, 2, 3, 4, 3, 1, 2);
Set<Integer> set = new HashSet<>();
List<Object> duplicates = new ArrayList<>();
numbers.forEach(n -> {
  if (!set.add(n)) {
    duplicates.add(n);
  }
});
System.out.println("Duplicate elements: " + duplicates);
结论:
重复元素:[3,1,2]
请注意,我们使用forEach()方法来迭代List,但您可以使用任何其他方法。

2. 使用地图

以下是这种在List中查找重复项的方法的算法步骤。
  • 创建一个新的Map对象和一个新的ArrayList来保存重复元素。
  • 该Map的键将是原始List的元素,其值将是它们在List中出现的次数。
  • 循环遍历列表(List)。
  • 对于List中的每个元素,使用containsKey()方法检查它是否作为Map中的键存在。
  • 如果存在,则在Map中增加其值,然后使用put()方法再次添加它。
  • 如果不存在,则将其添加到Map中,值为1。
  • 一旦列表迭代完成,所有值大于 1 的Map元素都会变成重复项。
  • 最后,迭代Map并将那些值大于1的元素添加到列表中以存储重复元素。
示例程序如下所示:
List<Integer> numbers = List.of(1, 2, 3, 4, 3, 1, 2);
Map<Integer, Integer> countMap = new HashMap<>();
List<Object> duplicates = new ArrayList<>();
numbers.forEach(n -> {
  if (countMap.containsKey(n)) {
    countMap.put(n, countMap.get(n) + 1);
  } else {
    countMap.put(n, 1);
  }
});
countMap.keySet().forEach(k -> {
  if(countMap.get(k)> 1) {
    duplicates.add(k);
  }
});

3.使用嵌套循环

如果要求您在不使用任何Collection类(如SetMap等)的情况下查找列表中的重复元素,那么此方法将很有用。算法阶段:
  • 循环遍历列表(List)。
  • 第一次循环完成后,返回到开头并再次重复这些步骤以查找列表其余部分中的每个项目。
  • 如果当前循环元素等于任何剩余元素,则它是重复的。
使用该算法编写的程序如下所示:
List<Integer> numbers = List.of(1, 2, 3, 4, 3, 1, 2);
List<Object> duplicates = new ArrayList<>();
for (int i = 0; i < numbers.size() - 1; i++) {
  for (int j = i + 1; j < numbers.size(); j++) {
    if (numbers.get(i).equals(numbers.get(j))) {
      duplicates.add(numbers.get(i));
    }
  }
}

4. 使用Java流

该方法基于Java 8线程,工作原理如下:
  • 将列表转换为
  • 使用collect()方法将流转换为Map。例如,key列表中的每个元素,value出现的次数。
  • collect()方法返回,MapCollector作为参数。Collector实现确定结果Map的键和值。
  • 由于我们希望Map 的键是 List 的元素其值是它们出现的次数,因此我们可以使用Collectors.groupingBy()创建一个收集器。
  • 使用groupingBy()创建Map后,使用entrySet()方法获取一组Map.Entry对象。
  • 根据大于 1 的值(即出现次数)过滤记录。
  • 将过滤后的记录与其键进行匹配。
示例程序:
List<Integer> numbers = List.of(1, 2, 3, 4, 3, 1, 2);
Map<Object, Long> map = numbers.
                        stream().
                        collect(
                          Collectors.
                          groupingBy(n -> n, Collectors.counting())
                        );
List<Object> duplicates = map.
                          entrySet().
                          stream().
                          filter(e -> e.getValue() > 1).
                          map(e -> e.getKey()).
        collect(Collectors.toList());
groupingBy() 方法用于根据特定条件对集合中的项目进行分组。以下是此方法如何工作的示例:
  • 该标准以 lambda 表达式的形式提供,因为groupingBy()采用Function参数,它是一个函数接口。
  • 在本例中,我们按恒等函数n -> n进行分组,这意味着我们按列表元素的值对列表元素进行分组。
  • groupingBy() 的第二个参数是另一个收集器,它指定应如何组合每个组中的元素。
  • 这里我们使用Collectors.counting()创建一个包含列表中每个元素的计数的Map 。
因此,生成的Map将包含每个元素在列表中出现的次数的计数。然后,我们使用filter()方法过滤Map以查找计数大于 1 的元素,表明它们是重复的。

如何使用 Java 创建简单的媒体播放器

来源:Medium 本教程将帮助您用 Java 创建一个简单的媒体播放器来播放音频和视频文件。 喝咖啡休息#209。 在 Java 列表中查找重复项的 4 种方法。 如何使用 Java 创建一个简单的媒体播放器 - 2开发媒体播放器是学习如何使用 Java 内置库处理媒体文件的好方法。为了完成此任务,我们将使用 JavaFX 和 Java 图形用户界面 (GUI) 工具包。

第 1 步:项目设置

首先,我们需要设置 Java 项目。我们将使用 Eclipse 作为 IDE,但您可以使用您选择的任何 IDE。创建一个新的 Java 项目并将其命名为“MediaPlayer”。我们还需要将 JavaFX 库添加到我们的项目中。为此,请转到项目属性并将 JavaFX 库添加到项目的构建路径中。

第 2 步:创建用户界面

接下来我们将为媒体播放器创建用户界面。它将是一个简单的用户界面,带有播放按钮、停止按钮和媒体播放器面板,用于显示我们想要播放的视频或音频文件。对于我们的界面,我们将使用BorderPane 布局。媒体播放器面板将位于 BorderPane 的中心,播放和停止按钮将位于 BorderPane 的底部。这是用户界面代码:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.BorderPane;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.Stage;

public class MediaPlayerApp extends Application {

    private MediaPlayer mediaPlayer;

    @Override
    public void start(Stage primaryStage) throws Exception {
        primaryStage.setTitle("Media Player");

        Button playButton = new Button("Play");
        playButton.setOnAction(e -> mediaPlayer.play());

        Button stopButton = new Button("Stop");
        stopButton.setOnAction(e -> mediaPlayer.stop());

        BorderPane borderPane = new BorderPane();

        Media media = new Media("http://www.example.com/sample.mp4");
        mediaPlayer = new MediaPlayer(media);
        MediaView mediaView = new MediaView(mediaPlayer);
        borderPane.setCenter(mediaView);
        borderPane.setBottom(stopButton);
        borderPane.setRight(playButton);

        Scene scene = new Scene(borderPane, 600, 400);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}
在此代码中,我们创建两个按钮:playButtonstopButton。当点击播放按钮时,我们调用mediaPlayer对象的play()方法。当单击停止按钮时,我们调用mediaPlayer对象的stop()方法。我们还使用示例视频文件的 URL创建一个Media对象,并使用Media对象创建一个mediaPlayer对象。最后,我们使用MediaPlayer对象创建一个MediaView对象,并将其设置为BorderPane 的中心。

步骤 3. 测试媒体播放器

现在我们已经配置了媒体播放器 UI,我们可以通过启动应用程序来测试它。当我们启动应用程序时,应该会出现媒体播放器 UI,我们可以单击播放按钮开始播放视频文件。我们还可以点击停止按钮来停止播放视频文件。

第 4 步:设置媒体播放器

现在我们有了一个可以工作的媒体播放器,我们可以根据自己的喜好对其进行自定义。我们可以更改用户界面的布局,更改正在播放的视频文件,添加额外的按钮来调整音量,或者添加进度条来显示视频的进度。
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION