java基础--List
List基本属性和方法移步官方文档:
List (Java Platform SE 8 )
1.处理最简单的List
(1)并集、交集、差集
并集:
如果只用List.addAll(Collection<? extends String> c)方法,获得的结果是两个List的元素值和,即会出现相同的元素,如以下代码:
1 public void test(){ 2 Listlist1 = new ArrayList<>(); 3 list1.add("北京"); 4 list1.add("上海"); 5 list1.add("广东"); 6 List list2 = new ArrayList<>(); 7 list2.add("北京"); 8 list2.add("上海"); 9 list2.add("山东"); 10 list1.addAll(list2); 11 System.out.println("list1.addAll(list2):"+list1); 12 } 13 14 获得的结果为:list1.addAll(list2):[北京, 上海, 广东, 北京, 上海, 山东]
差集:
如果想获得没有重复的集合,需要先了解一下List.removeAll(Collection<?> c),即求差集,如下代码:
1 public void test(){ 2 Listlist1 = new ArrayList<>(); 3 list1.add("北京"); 4 list1.add("上海"); 5 list1.add("广东"); 6 List list2 = new ArrayList<>(); 7 list2.add("北京"); 8 list2.add("上海"); 9 list2.add("山东"); 10 list1.removeAll(list2); 11 System.out.println("list1.removeAll(list2):"+list1); 12 } 13 14 获得的结果为:list1.removeAll(list2):[广东]
无重复并集:
此时若求无重复并集,可以先做差集,再进行并集,如下代码:
1 public void test(){ 2 Listlist1 = new ArrayList<>(); 3 list1.add("北京"); 4 list1.add("上海"); 5 list1.add("广东"); 6 List list2 = new ArrayList<>(); 7 list2.add("北京"); 8 list2.add("上海"); 9 list2.add("山东"); 10 list1.removeAll(list2); 11 list1.addAll(list2); 12 System.out.println("list1.removeAll+addAll(list2):"+list1); 13 } 14 15 获得的结果为:list1.removeAll+addAll(list2):[广东, 北京, 上海, 山东]
交集:
交集使用retailAll()即可,如以下代码:
1 public void test(){ 2 Listlist1 = new ArrayList<>(); 3 list1.add("北京"); 4 list1.add("上海"); 5 list1.add("广东"); 6 List list2 = new ArrayList<>(); 7 list2.add("北京"); 8 list2.add("上海"); 9 list2.add("山东"); 10 list1.retainAll(list2); 11 System.out.println("list1.retainAll(list2):"+list1); 12 } 13 14 获得的结果为:list1.retainAll(list2):[北京, 上海]
(3)有些时候,可能需要将某list查分成指定大小的list,所以简单的实现了一下:
1 public staticList > splitList(List
target, int size) { 2 List > listArr = new ArrayList
>(); 3 //获取被拆分的数组个数 4 int arrSize = target.size() % size == 0 ? target.size() / size : target.size() / size + 1; 5 for (int i = 0; i < arrSize; i++) { 6 List
sub = new ArrayList (); 7 //把指定索引数据放入到list中 8 for (int j = i * size; j <= size * (i + 1) - 1; j++) { 9 if (j <= target.size() - 1) { 10 sub.add(target.get(j)); 11 } 12 } 13 listArr.add(sub); 14 } 15 return listArr; 16 } 17 18 @Test 19 public void test(){ 20 List list1 = new ArrayList<>(); 21 list1.add("北京1"); 22 list1.add("北京2"); 23 list1.add("北京3"); 24 list1.add("北京4"); 25 list1.add("北京5"); 26 list1.add("北京6"); 27 list1.add("北京7"); 28 list1.add("北京8"); 29 list1.add("北京9"); 30 list1.add("北京10"); 31 list1.add("北京11"); 32 33 System.out.println("list1:"+list1); 34 System.out.println("result:"+splitList(list1,2)); 35 } 36 37 结果: 38 list1:[北京1, 北京2, 北京3, 北京4, 北京5, 北京6, 北京7, 北京8, 北京9, 北京10, 北京11] 39 result:[[北京1, 北京2], [北京3, 北京4], [北京5, 北京6], [北京7, 北京8], [北京9, 北京10], [北京11]]
(4)其他常用的简单方法:
1 //List 2 List