19、如何对ArrayList集合中的数据进行删除操作?List<String> list = new ArrayList<>(); list.addAll(Arrays.asList("张三","李四","王五","刘备", "张飞","赵云","曹操","孙权","武松","宋江","鲁智深","张三丰","张无忌","张天师")); //TODO 遍历集合,去除集合中所有姓张的
时间: 2023-03-30 16:02:47 浏览: 80
可以使用迭代器Iterator来遍历集合,判断每个元素是否以"张"开头,如果是则使用Iterator的remove()方法删除该元素。代码如下:
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()){
String name = iterator.next();
if(name.startsWith("张")){
iterator.remove();
}
}
相关问题
将sql改成jdbctemplete方式查询 List<List<String>> assetscardcodeQueryList = new ArrayList<>(); ArrayList<String> query1 = new ArrayList<>(); ArrayList<String> query2 = new ArrayList<>(); query1.add("000000009247"); query2.add("000000009247"); assetscardcodeQueryList.add(query1); assetscardcodeQueryList.add(query2); List<List<String>> assetscardcodeAndBukrsQueryList = new ArrayList<>(); ArrayList<String> query3 = new ArrayList<>(); query3.add("400000001644"); query3.add("A017"); query3.add("400000001641"); query3.add("A017"); String sql="select * from table where (cloum1,cloum2) in (( 'A017', '400000001644'), ('A017', '400000001641')) or cloum1 in ('000000009247','000000009247');"
下面是将这个SQL查询改成使用JdbcTemplate执行的代码:
```
List<List<String>> assetscardcodeQueryList = new ArrayList<>();
ArrayList<String> query1 = new ArrayList<>();
ArrayList<String> query2 = new ArrayList<>();
query1.add("000000009247");
query2.add("000000009247");
assetscardcodeQueryList.add(query1);
assetscardcodeQueryList.add(query2);
List<List<String>> assetscardcodeAndBukrsQueryList = new ArrayList<>();
ArrayList<String> query3 = new ArrayList<>();
query3.add("400000001644");
query3.add("A017");
query3.add("400000001641");
query3.add("A017");
String sql = "select * from table where (cloum1,cloum2) in " +
"(?, ?)" + ", ".repeat(assetscardcodeAndBukrsQueryList.size() - 1) + "or cloum1 in " +
"(?" + ", ?".repeat(assetscardcodeQueryList.size() - 1) + ")";
List<Object> params = new ArrayList<>();
for (List<String> cloumPair : assetscardcodeAndBukrsQueryList) {
params.addAll(cloumPair);
}
params.addAll(assetscardcodeQueryList.stream().flatMap(Collection::stream).collect(Collectors.toList()));
List<Map<String, Object>> rows = jdbcTemplate.query(sql, params.toArray(), new RowMapper<Map<String, Object>>() {
@Override
public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
ResultSetMetaData meta = rs.getMetaData();
Map<String, Object> row = new HashMap<>();
for (int i = 1; i <= meta.getColumnCount(); i++) {
row.put(meta.getColumnName(i), rs.getObject(i));
}
return row;
}
});
// 处理查询结果
for (Map<String, Object> row : rows) {
// do something
}
```
这里使用了与前面相同的动态生成SQL语句和参数设置方式,只是将参数列表改成了从Java对象中获取。最终,该方法将返回一个包含查询结果的列表,每个结果都是一个Map对象,其中包含列名和对应的值。你可以根据需要处理该结果集。
List<String> dateList = new ArrayList<>();按EndTime分组并且排序用升序
可以通过以下步骤来实现按EndTime分组并升序排序:
1. 将List中的元素按照EndTime属性进行分组,可以使用Java 8的Stream API中的groupingBy方法实现。
2. 将分组后的Map中的Entry对象转换为List集合。
3. 通过Collections.sort方法对List集合进行排序,排序时需要传入一个Comparator对象,可以使用Lambda表达式实现按照Entry的key升序排列。
4. 将排序后的List集合中的元素的key属性添加到新的List中。
代码示例:
```java
Map<String, List<String>> groupedMap = dateList.stream()
.collect(Collectors.groupingBy(s -> s.split(",")[2])); // 假设EndTime在字符串的第三个位置
List<Map.Entry<String, List<String>>> entryList = new ArrayList<>(groupedMap.entrySet());
Collections.sort(entryList, (o1, o2) -> o1.getKey().compareTo(o2.getKey()));
List<String> sortedDateList = new ArrayList<>();
for (Map.Entry<String, List<String>> entry : entryList) {
sortedDateList.addAll(entry.getValue());
}
```
其中,比较器使用了Lambda表达式实现。如果你的Java版本比较低,可以使用匿名内部类实现。
希望这个回答能够帮到你!