import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.Iterator; public class fuxi3_arraylist_hashset { public static void main(String[] args) { /************************* JDK1.5增强型for循环 *************************************************/ Collection<String> list = new HashSet<String>();// 多态 list.add("aaa"); list.add("bbb"); list.add("aaa"); list.add("ddd"); list.add("eee"); System.out.println(list.toString());// 打印结果[aaa, ddd, bbb, eee] for (Object obj : list)// 遍历list元素,赋给obj { System.out.println(obj); } /************************* collection容器ArrayList *************************************************/ ArrayList<Integer> c1 = new ArrayList<Integer>(); c1.add(10); c1.add(20); c1.add(30); c1.add(20); c1.add(50); int cs = c1.size();// 容器大小 c1.set(0, 5);// 设置容器内指定元素 cs = c1.indexOf(10);// 判断对象的位置 c1.subList(0, 2);// 截取0-1位置的容器元素,生成新的容器 System.out.println(c1); System.out.println(c1.subList(0, 2)); Object[] obj = c1.toArray();// 转成数组 for (int i = 0; i < obj.length; i++) { System.out.println(obj[i]); } /** * ArrayList为什么有两个remove方法? remove(int index) 是子类新添加的! * 如果是父类引用指向子类对象,则找不到子类中新添加的方法。 要想调用子类新添加的方法,需要先转型 */ c1.remove(2);// 移除该位置的元素,原容器长度减1 c1.remove(Integer.valueOf(20));// 移除第一个该值的元素对象,原容器长度减1,返回类型为布尔类型,结果为true System.out.println(c1); int ig = c1.get(0);// 得到位置0的元素 boolean bc = c1.isEmpty();// 是否为空 bc = c1.contains(15);// 是否包含 c1.clear();// 清空 /************************* 容器间ArrayList *************************************************/ ArrayList<String> a1 = new ArrayList<String>(); a1.add("aaa"); a1.add("bbb"); a1.add("ccc"); a1.add("ddd"); a1.add("eee"); ArrayList<String> a2 = new ArrayList<String>(); a2.add("bbb"); a2.add("eee"); a2.add("ddd"); boolean flag2 = a2.remove("fff"); System.out.println(flag2);// 结果为false System.out.println(a1.containsAll(a2));// 是否包含a2所有元素,返回布尔值true System.out.println(a1.retainAll(a2));// 求交集,返回布尔值true System.out.println(a1.addAll(a2));// 添加a2所有元素,返回布尔值true System.out.println(a1.removeAll(a2));// 移除与a2所有元素相同的元素,返回布尔值true a1.retainAll(a2);// 求交集,返回布尔值,a1打印结果为:[bbb, ddd, eee] a1.addAll(a2);// 添加,结果为:[aaa, bbb, ccc, ddd, eee, bbb, ddd] a1.removeAll(a2);// 移除,结果为:[aaa, ccc] System.out.println(a1); /************************* 工具类collections *************************************************/ ArrayList<Integer> aa = new ArrayList<Integer>(); aa.add(13); aa.add(5); aa.add(10); aa.add(53); aa.add(25); aa.add(18); Collections.shuffle(aa);// 将容器内对象重新随机排列 Collections.sort(aa);// 将容器内对象从小到大排序 Collections.reverse(aa);// 将容器内对象倒置排列 Collections.fill(aa, 555);// 用特定的对象初始化整个aa Collections.swap(aa, 0, aa.size() - 1);// 容器内对象位置对换 Integer inc = Collections.max(aa);// 获取容器值最大的对象 int ic = Collections.binarySearch(aa, 5);// 二分法查找容器内对象,用之前必须先sort,否则结果返回-1 System.out.println(ic); // /////////////////////////////***复制****///////////////////////////////////////////// ArrayList<Integer> aa1 = new ArrayList<Integer>(); aa1.add(2); aa1.add(3); ArrayList<Integer> aa2 = new ArrayList<Integer>(); aa2.add(12); aa2.add(13); aa2.add(14); ArrayList<Integer> aa3 = new ArrayList<Integer>(); aa3.add(15); // Collections.copy(aa1, aa2); //将aa2复制到aa1,aa1长度必须大于aa2,否则报错 Collections.copy(aa2, aa3);// 将aa3复制到aa2,长度不够的保留原对象,打印结果:[15, 13, 14] System.out.println(aa1); System.out.println(aa2); } }