Collection的笔记:
/**存储对象考虑使用: * 1.数组, ①一旦创建,其长度不可变!② 长度难于应对实际情况 * 2.Java集合, ①Collection集合: 1.set: 元素无序,不可重复; 2.元素有序,可重复的集合--动态不定长数组 * ②Map集合, 具有映射关系的"key - value"对的集合 * --------------------------------- * 1.Collection接口 常用及操作 * ①size(),clear()②isEmpty(),③contains(),④add()方法 和remove()方法, ⑤ iterator 来返回迭代器对象 * ⑥addall() 和removeall() ,添加或者删除全部! ⑦Object[] toArray() ,将集合转换为Object数组 * 2.Collection 的遍历方法: * ① 转换成Object[]类进行输出,不常用 ; for(int i=0;i<s.length;i++) * ②使用迭代器进行遍历集合:1.声明 Iterator it= col2.iterator();2.hasNext();3.返回迭代中的下一个元素:it.next() * ③使用增强的for循环语句: for(Object o: collection) sout(o); //Object表示确定的类型 */
Collection的测试代码:
public class TestCollection { public static void main(String[] args) { ArrayList col = new ArrayList(); ArrayList col2 = new ArrayList(); col.add(123); col.add("QWQ"); col.add(new Date()); col2.addAll(col); Object[] s=col2.toArray(); //1.转换成Object[]类进行输出,不常用 for(int i=0;i<s.length;i++) System.out.print(" ("+s[i]+")"); System.out.println("--------------"); //2.使用迭代器进行遍历集合:1.声明 Iterator it= col2.iterator();2.hasNext();3.返回迭代中的下一个元素:it.next() Iterator it= col2.iterator(); while(it.hasNext()){ System.out.print(" "+it.next()); } System.out.println("--------------"); //3.使用增强的for循环语句: for(Object o: collection)sout(o); //Object表示确定的类型 for (Object o: col2) System.out.print(" "+o); } }
Collection的测试结果:
(123) (QWQ) (Sun Oct 14 17:37:55 CST 2018)--------------
123 QWQ Sun Oct 14 17:37:55 CST 2018--------------
123 QWQ Sun Oct 14 17:37:55 CST 2018
ArrayList和LinkedList的笔记:
/** ArrayList (本质:可变长数组 ):List 的主要实现类 * 易错点: 不可以使用下标直接进行索引,需要get()! * List中相对于Collection<E> 新增加的方法 * 0. 无参数(Object)类型声明构造: List list=new ArrayList(); * 有参数(String/int...)类型声明构造: List<String> list2=new ArrayList<String>(); * 1.E get(int index);//返回索引位置的值 * 2.E set(int index,E element); //设置下标为index位置的值 * 3.void add(int index,E element); //增加值 * 4.E remove(int int index) //删除一个值 * 5.int indexOf/lastIndexOf( o) //正向或逆向查找一个元素值 * 6.可以调用size()取长度,跑循环进行 get()遍历! * ------------- * 父类Collection接口 常用及操作 * * ①size(),clear()②isEmpty(),③contains(),④add()方法 和remove()方法, ⑤ iterator 来返回迭代器对象 * * ⑥addall() 和removeall() ,添加或者删除全部! ⑦Object[] toArray() ,将集合转换为Object数组 * ------------- * LinkedList是依靠链表实现的!优势: 常用来处理频繁的插入和删除操作; * * 1.对于在头部插入和内部删除元素, LinkedList每次为常量时间; 而同样的, ArrayList是线性时间! * * 1.对于定位访问, LinkedList每次为线性时间; 而同样的, ArrayList是常量时间! * ---------------- * * LinkedList的特有操作: (简直就是C++的STL库中的deque双端队列!) * 1.构造方法: LinkedList()/LinkedList(Collection c) * 2.添加头部或者在尾部: addFirst(E element)/addLast(E element) * 3.删除头部或者尾部: removeFirst()/removeLast() * ------------- * * Vector(古老的实现类,线程安全, 基本弃用了, JDK 1.0) */
ArrayList和LinkedList的测试代码:
public class TestList { public static void main(String[] args){ System.out.println("--------Test ArrayList--------"); List list=new ArrayList(); list.add(6666); list.add(0,"6666"); list.add(0,"6667");list.add(0,"6667"); list.set(0,"6666777"); for(int i=0;i<list.size();i++) System.out.print(" "+list.get(i)); System.out.println(" ------Test ArrayList<String>----"); ArrayList<String> list2=new ArrayList<String>(); list2.add(0,"6666"); list2.add(0,"6667");list2.add(0,"6667"); list2.set(0,"6666777"); for (String s:list2) System.out.print(" "+s); LinkedList<Integer> link1= new LinkedList<Integer>(); link1.addFirst(666); link1.addLast(7777); link1.addLast(7777); link1.removeLast(); LinkedList link2= new LinkedList(list2); //拿ArrayList来构造了LinkedList System.out.print(" link1: "); for (Integer i:link1) System.out.print(" "+i); System.out.print(" link2: "); for (Object i:link2) System.out.print(" "+i); } }
ArrayList和LinkedList的测试结果:
--------Test ArrayList-------- 6666777 6667 6666 6666 ------Test ArrayList<String>---- 6666777 6667 6666 link1: 666 7777 link2: 6666777 6667 6666