Liast:存放的是单一值
1、可以存放不同类型的数据,而数组只能存放固定类型的数据 2、当使用Arraylist子类实现的时候,初始化的长度是10,当长度不够的时候会动进行扩操作
api方法: 增加数据的方法 add:要求必须传入的参数是Object对象,因此当写入基本数据类型的时候,包含了自动拆箱和自动装箱的过程 addAll:添加另一个集合的元素到此集合中 删除数据的方法 clear:只是清空集合中的元素,但是此集合对象并没有被回收 remove:删除指定元素 removeAll:删除集合元素 查询数据的方法 containsAll:判断此集合中是否包含另一个集合 isEmpty:判断集合是否等于空 retainAll:若集合中拥有另一个集合的所有元素,返回true,否则返回false size:返回当前集合的大小
public class ListDemo { public static void main(String[] args) { List list = new ArrayList(); list.add(123); list.add("abc"); list.add(false); list.add("abc"); System.out.println(list); list.add(0, "ok"); System.out.println(list); System.out.println(list.get(2)); System.out.println(list.indexOf("abc")); System.out.println(list.lastIndexOf("abc")); // System.out.println(list.remove(3)); // System.out.println(list); System.out.println(list.set(3,true)); System.out.println(list); System.out.println(list.subList(2,4)); } }
Collection:存放的是单一值 特点: 1、可以存放不同类型的数据,而数组只能存放固定类型的数据 2、当使用arraylist子类实现的时候,初始化的长度是10,当长度不够的时候会自动进行扩容操作 api方法: 增加数据的方法 add:要求必须传入的参数是Object对象,因此当写入基本数据类型的时候,包含了自动拆箱和自动装箱的过程 addAll:添加另一个集合的元素到此集合中 删除数据的方法 clear:只是清空集合中的元素,但是此集合对象并没有被回收 remove:删除指定元素 removeAll:删除集合元素 查询数据的方法 contains:判断集合中是否包含指定的元素值 containsAll:判断此集合中是否包含另一个集合 isEmpty:判断集合是否等于空 retainAll:若集合中拥有另一个集合的所有元素,返回true,否则返回false size:返回当前集合的大小 iterator()遍历元素 //集合转数组的操作 toArray:将集合转换成数组
public class CollectionDemo { public static void main(String[] args) { Collection collection = new ArrayList(); collection.add(1); //new Integer(1) collection.add("123"); //new String("123") collection.add(true); //new Boolean(true) System.out.println(collection); Collection collection1 = new ArrayList(); collection1.add("abc"); collection1.add(666); collection1.add(100L); collection1.add("abc"); collection1.add(666); collection1.add(100L); collection1.add("abc"); collection1.add(666); collection1.add(100L); System.out.println(collection.addAll(collection1)); // System.out.println(collection); // collection.clear(); // System.out.println(collection); System.out.println(collection.contains(666)); System.out.println(collection.containsAll(collection1)); System.out.println(collection.isEmpty()); // System.out.println(collection.remove(666)); // System.out.println(collection); // System.out.println(collection.removeAll(collection1)); // System.out.println(collection); System.out.println(collection1.retainAll(collection)); System.out.println(collection.size()); Object[] objects = collection.toArray(); for (int i = 0; i < objects.length; i++) { System.out.println(objects[i]); } } }
、Vector也是List接口的一个子类实现 2、Vector跟ArrayList一样,底层都是使用数组进行实现的 3、面试经常问区别: 1) ArrayList是非线程安全的,高效率,Vector是线程安全的,低效率 2) ArrayList扩容是每次扩容1.5倍,Vector扩容是每次扩容2倍 public class VectorDemo { public static void main(String[] args) { Vector vector = new Vector(); vector.add(1); vector.add("abc"); vector.add(100.0d); vector.add(true); System.out.println(vector); System.out.println(vector.firstElement()); } }
Collections
用法:
public class CollectionsDemo { public static void main(String[] args) { List<Integer> list = new ArrayList<Integer>(); list.add(1); list.add(3); list.add(2); list.add(5); list.add(4); System.out.println(Collections.addAll(list,6,9,8,7)); System.out.println(list);
//使用二分法查找集合中的元素,前提是先要对集合中的元素进行排序
list.sort(new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { if(o1 > o2){ return 1; }else if(o1 < o2){ return -1; }else{ return 0; } } });
Arrays
Arrays提供了数据操作的工具类,包含很多方法集合和数组之间的转换数组转成list:
public class ArraysDemo { public static void main(String[] args) { //数组转化成集合 // int[] array = {1,3,2,5,4}; List<Integer> ints = Arrays.asList(1,3,2,5,4); System.out.println(ints); //集合转化成数组 Object[] objects = ints.toArray(); } }