- 将List<String>转为逗号分隔的字符串
List<String> list = Arrays.asList("1", "2", "3","4", "5", "6");
1、String str = String.join(",", list );
2、String str = list .stream().collect(Collectors.joining(","));
3、String str = StringUtils.collectionToDelimitedString(list ,",");//利用Spring Framework的StringUtils
4、String str = StringUtils.join(list .toArray(), ",");//利用Apache Commons的StringUtils
- 求两个List的交集
//求两个集合的交集,即将list1中存在但list2中不存在的元素删掉,如果最后list1不为空,则表示有交集
list1.retainAll(list2);
public static void main(String[] args) {
// 创建一个List
ArrayList<String> list1 = new ArrayList<>();
list1.add("哈士奇");
list1.add("阿拉斯加");
list1.add("萨摩耶");
System.out.println("ArrayList 1: " + list1);
// 创建另一个List
ArrayList<String> list2 = new ArrayList<>();
list2.add("哈士奇");
list2.add("阿拉斯加");
list2.add("金毛");
System.out.println("ArrayList 2: " + list2);
// 求交集
list1.retainAll(list2);
System.out.println("交集元素: " + list1);
}
/*********输出结果*********/
ArrayList 1: [哈士奇, 阿拉斯加, 萨摩耶]
ArrayList 2: [哈士奇, 阿拉斯加, 金毛]
交集元素: [哈士奇, 阿拉斯加]
- 将List中指定元素放到最前面
//将dogs中包含的元素按照dogs中的顺序放到list的最前方
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
list.add("哈士奇");
list.add("萨摩耶");
list.add("阿拉斯加");
list.add("7");
List<String> dogs = new ArrayList<>();
dogs.add("哈士奇");
dogs.add("阿拉斯加");
dogs.add("萨摩耶");
System.out.println("操作前:"+list);
for (String s : list) {
if(dogs.contains(s)){
list.set(list.indexOf(s),list.get(dogs.indexOf(s)));
list.set(dogs.indexOf(s),s);
}
}
System.out.println("操作后:"+list);
}
/*********输出结果*********/
操作前:[1, 2, 3, 哈士奇, 萨摩耶, 阿拉斯加, 7]
操作后:[哈士奇, 阿拉斯加, 萨摩耶, 1, 3, 2, 7]
- 通过Iterator遍历List删除其中某些特定要素
如果使用普通方式遍历并直接删除则会报异常:java.util.ConcurrentModificationException
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
Iterator i = list.iterator();
while (i.hasNext()) {
String s = (String) i.next();
if (s.equals("1")) {
i.remove();//list.remove(s);会抛异常
}
}
System.out.println(list.toString());
//输出结果为:[2, 3, 4]
}
- 获取List中的最大值
//直接获取最大的数字
List<Double> strList = Arrays.asList(new Double[]{333.5,44.0,1231.4,11.78});
System.out.println("最大数为:"+Collections.max(strList));
//最大数为:1231.4
//获取实体集合中某个属性最大的实体
TravelStand maxStand = stands.stream().max(Comparator.comparing(e -> e.getStand())).get();
- 截取List
List<String> list = new Arraylist<>();
List<String> subList = list.subList(0, 8);
其中subList(0, 8)取得的是下标为0到7的元素,不包含下标为8的元素.