【问题标题】:How can I reverse the contents of an ImageIcon array thats been created in a different class?如何反转在​​不同类中创建的 ImageIcon 数组的内容?
【发布时间】:2019-11-10 01:13:19
【问题描述】:

我目前有一个名为 ImageShow 的 ArrayList。我一直在尝试寻找在 Java 中交换这个数组的内容的方法,但我还没有找到方法。

ImageShow.add(new ImageIcon(file.listFiles()[a].getAbsolutePath())); //Adding the files into an imageicon array

这就是我将文件的内容放入数组中的方式,然后我希望它能够反转数组中所有项目的内容。例如,数组将按顺序包含 15.png、23.png、32.png、47.png、58.png、64.png、76.png、81.png,但我希望能够按一个按钮,它会反转。任何人都可以帮忙吗?我找到了使用字符串而不是 ImageIcon 数组的方法。

谢谢。

【问题讨论】:

  • 因此您将第一个值与最后一个值交换。然后将第二个值与倒数第二个值交换。等等。所以你写了一个循环来做到这一点。当您完成数组的一半时,您就完成了,因为所有项目都已交换。数组的内容(String 或 ImageIcon)无关紧要 此外,变量名不应以大写字符开头。
  • 所以在你的最后一个问题中你问的是“排序”,而在这个问题中你问的是“倒车”。 “反转”不关心列表中项目的顺序。它只是颠倒了列表中的项目。 “排序”意味着你有这样的规则要遵循,你会使用比较器。提出明确的问题,不要混淆术语。
  • 另外,当您获得帮助时,不要忘记通过单击复选标记“接受”答案,以便人们知道问题已解决。您提出的两个问题都得到了帮助。
  • 嘿,camickr。我不知道如何对我提出的第一个问题进行排序,尽管其中一个答案确实有帮助。我决定第一次将数组排序,并且只按一种方式(价格)排序,这只是颠倒顺序。我也不知道如何将它们标记为已回答,所以谢谢你。

标签: java arrays arraylist java-stream reverse


【解决方案1】:

使用stream 将是处理此问题的简单方法。将单个 arg 传递给 ImageIcon 时,该 arg 既是文件名又是描述。

final Comparator<ImageIcon> sortBy = Comparator.comparing(ImageIcon::getDescription).reversed();
List<ImageIcon> sortedList = ImageShow.stream().sorted(sortBy).collect(toList());

【讨论】:

  • 真的吗?当您还可以使用 ImageShow.sort(sortBy); 对列表进行就地排序时,为什么使用 Stream “一种简单的方法来处理这个问题”?除此之外,当任务是反转现有的列表顺序时,一个普通的Collections.reverse(ImageShow); 也可以。
  • 好点 :) 我想我应该多考虑一下..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-10
  • 2013-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-30
相关资源
最近更新 更多