List<JSONObject>取这个JSONObject的key等于某个值的JSONObject
时间: 2024-03-22 11:33:10 浏览: 14
可以使用Java 8的Stream API来实现。具体代码如下:
```
List<JSONObject> list = new ArrayList<>();
// 假设list中有多个JSONObject对象
String targetKey = "targetValue"; // 目标key的值
JSONObject result = list.stream()
.filter(obj -> targetKey.equals(obj.getString("key")))
.findFirst()
.orElse(null);
// 如果找到了目标JSONObject,则result为该对象;否则为null
```
以上代码会在list中查找key等于targetKey的JSONObject对象,并将其赋值给result变量。如果找到了目标JSONObject,则result为该对象;否则为null。
相关问题
List<JSONObject> 转换成Map<String,JSONObject>, map的key为JSONObject的其中一个属性
可以通过遍历List,将每个JSONObject对象提取出来的key作为Map的key,JSONObject对象作为Map的value,存入Map中,实现List<JSONObject>转换成Map<String,JSONObject>,其中Map的key为JSONObject的其中一个属性。
以下是Java代码示例:
```java
List<JSONObject> list = new ArrayList<>();
Map<String, JSONObject> map = new HashMap<>();
for (JSONObject obj : list) {
map.put(obj.getString("属性名"), obj);
}
```
其中"属性名"为要作为Map的key的JSONObject对象的属性名。
SingleOutputStreamOperator<List<JSONObject>> applyDataStream = dataStreamSource.keyBy(value -> { String[] splitValues = value.getString("key").toString().split(":"); return splitValues[2]; }).window(TumblingProcessingTimeWindows.of(Time.seconds(2))).apply(new WindowFunction<JSONObject, List<JSONObject>, String, TimeWindow>() { @Override public void apply(String key, TimeWindow timeWindow, Iterable<JSONObject> input, Collector<List<JSONObject>> out) throws Exception { List<JSONObject> output = new ArrayList<>(); input.forEach(s -> { // String topicName = ModelUtil.getConfigValue("ods_kafka_all_data_topicName") + "_" + key; //主题名称 String value = s.getString("value"); TranslateJson translateJson = JSON.parseObject(value, TranslateJson.class); if ("read".equals(translateJson.getType()) || "c".equals(translateJson.getType())) {//新增的数据才同步 使用这种写法优化上面代码
您可以使用 Lambda 表达式来优化上面的代码,示例代码如下:
```
SingleOutputStreamOperator<List<JSONObject>> applyDataStream = dataStreamSource
.keyBy(value -> value.getString("key").toString().split(":")[2])
.window(TumblingProcessingTimeWindows.of(Time.seconds(2)))
.apply((String key, TimeWindow timeWindow, Iterable<JSONObject> input, Collector<List<JSONObject>> out) -> {
List<JSONObject> output = new ArrayList<>();
input.forEach(s -> {
String value = s.getString("value");
TranslateJson translateJson = JSON.parseObject(value, TranslateJson.class);
if ("read".equals(translateJson.getType()) || "c".equals(translateJson.getType())) {
// 新增的数据才同步
// String topicName = ModelUtil.getConfigValue("ods_kafka_all_data_topicName") + "_" + key; //主题名称
output.add(s);
}
});
out.collect(output);
});
```
使用 Lambda 表达式可以使代码更加简洁易读,同时也可以提高代码的执行效率。