Java集合foreach是Java 8中引入的一个新特性,它可以让我们更加简洁地遍历集合中的元素。它可以用来遍历数组、列表、集合和Map,并且可以使用lambda表达式来进行迭代。
foreach语法如下:
collection.forEach(element -> { // do something with element });
其中collection是要遍历的集合,element是集合中的元素,->是lambda表达式的语法,{}内部是要对每个元素执行的操作。
foreach有几个优势:
当然也有一些不足之处:
JavaFX中的集合由javafx.collections包定义,javafx.collections包由以下接口和类组成:
接口 | 描述 |
---|---|
ObservableList | 允许我们跟踪更改的列表 |
ListChangeListener | 接收更改通知的接口 |
ObservableMap | 允许我们跟踪更改的映射 |
MapChangeListener | 从ObservableMap接收更改通知的接口 |
类 | 描述 |
---|---|
FXCollections | 实用程序类映射到java.util.Collections |
ListChangeListener.Change | 表示对ObservableList所做的更改 |
MapChangeListener.Change | 表示对ObservableMap所做的更改 |
以下代码显示如何使用ObservableList,ObservableMap和FXCollections。
import java.util.ArrayList; import java.util.List; import javafx.collections.FXCollections; import javafx.collections.ListChangeListener; import javafx.collections.ObservableList; public class Main { public static void main(String[] args) { List<String> list = new ArrayList<String>(); ObservableList<String> observableList = FXCollections.observableList(list); observableList.addListener(new ListChangeListener() { @Override public void onChanged(ListChangeListener.Change change) { System.out.println("change!"); } }); observableList.add("item one"); list.add("item two"); System.out.println("Size: " + observableList.size()); } }
上面的代码生成以下结果。
以下代码显示了如何监听ObservableMap上的更改。
import java.util.HashMap; import java.util.Map; import javafx.collections.FXCollections; import javafx.collections.MapChangeListener; import javafx.collections.ObservableMap; public class Main { public static void main(String[] args) { Map<String, String> map = new HashMap<String, String>(); ObservableMap<String, String> observableMap = FXCollections .observableMap(map); observableMap.addListener(new MapChangeListener() { @Override public void onChanged(MapChangeListener.Change change) { System.out.println("change! "); } }); observableMap.put("key 1", "value 1"); map.put("key 2", "value 2"); } }
上面的代码生成以下结果。
以下代码显示了如何找出已更改的内容。
import java.util.ArrayList; import java.util.List; import javafx.collections.FXCollections; import javafx.collections.ListChangeListener; import javafx.collections.ObservableList; public class Main { public static void main(String[] args) { List<String> list = new ArrayList<String>(); ObservableList<String> observableList = FXCollections.observableList(list); observableList.addListener(new ListChangeListener() { @Override public void onChanged(ListChangeListener.Change change) { System.out.println("Detected a change! "); while (change.next()) { System.out.println("Was added? " + change.wasAdded()); System.out.println("Was removed? " + change.wasRemoved()); System.out.println("Was replaced? " + change.wasReplaced()); System.out.println("Was permutated? " + change.wasPermutated()); } } }); observableList.add("item one"); list.add("item two"); System.out.println("Size: " + observableList.size()); } }
上面的代码生成以下结果。
Java日期时间 -Java实例/持续时间实例和持续时间允许我们记录时间戳和已用时间。我们可以从瞬间添加和减去持续时间,以获得另一...
Java流连接Collectors类的joining()方法返回一个收集器,它连接CharSequence流,并将结果作为String返回。joining()方法是重载的...
Java IO教程 -Java扫描器要从标准输入读取数字,我们必须将其读取为字符串并将其解析为数字。java.util包中的Scanner类根据模式...
JavaFX教程 -JavaFX组合框组合框允许用户选择几个选项之一。用户可以滚动到下拉列表。组合框可以是可编辑和不可编辑的。创建组合...
Java Lambda语法使用lambda表达式的一般语法是(Parameters) -{ Body }- 分隔参数和lambda表达式主体。参数括在括号中,与方法相...