collection:List、Set
1)List:(有序可变的数组 ,数组一般存放的是对象的引用,允许添加重复元素) ArrayList ---------> 数组形式存储,默认对象数组10,方便添加与查找,线程不安全(不同步),效率高。 LinkedList ---------> 链表结构存存储,双向链表,适合插入和删除,效率低。 Vector ---------> 数组形式存储, 默认对象数组10,每次扩容10,线程安全(同步),效率低。 Arraylist的常用方法: 1)增 : add() 2)删 : remove(如果是值的话就移除一个) 、 removeAll()相等于clear、 clear() 3)查 : get() 、 comtains (返回boolean) 、 indexof(此列表中第一次出现的指定元素的索引,如果列表不包含该元素,则返回 -1)、 isEmpty(如果此列表中没有元素,则返回
true
) 4)改:set(改哪个,改值)
ArrayList< Object > list=new ArrayList< Object >();
list.add(1); list.add(2); list.add(0, 2);System.out.println( list ); //在第几个位置插入元素 list.addAll(list);System.out.println( list ); //把list的元素加到list中 list.addAll(0, list);System.out.println( list ); //把list中的元素加到list中第一个位置的元素中System.out.println( list.size() ); //返回list的长度 System.out.println( list.contains(1) ); //查看list中是否有1元素,返回boolearn类型
System.out.println( list.get(0) ); //查看list中的第一个元素 System.out.println( list.set(0, 10) ); System.out.println( list ); //修改第一个元素的值位10,返回下标 System.out.println( list.indexOf(8)); //此列表中第一次出现的指定元素的索引,如果列表 不包 含该元素,则返回 -1 list.remove(0); System.out.println( list ); //移除第一个元素 list.clear(); //清空list列表
System.out.println( list.isEmpty() ); //查看list中是否为空的,返回boolearn类型
2)Set:(无序可变的数组,不允许添加重复元素) HashSet ------>HashMap的一个实例、不保证遍历顺序恒久不变。 添加元素时如何判断是否重复,先调用对象的hashCode方法求值,如果 hash值在集合中不存在,那么该对象可以添加(不重复的);如果hash值 相同,(还不能确定对象)是否相同,因为不同的对象有可能产生不同的 hashCode值,那么需要再调用equals方法来验证。equals方法返回 true,表示两个对象相同,返回false,表示两个对象不同。 (即两个对象值相同,把两个对象写成一个对象的话就要重写对象(类) 中的hashCode方法和equals方法) TreeSet ------>TreeMap的一个实例、自热顺序排列(从小到大) 在TreeSet集合中添加自定义对象,必须实现 Comparable接口,因为添加 方法会使用compareTo方法来验证对象的排序位置,并验证对象是否重 复,如果compareTo返回0,表示两个对象重复,不同的话,使用大小来 决定排序的顺序