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("\t("+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("\t"+it.next());
}
System.out.println("--------------");
//3.使用增强的for循环语句: for(Object o: collection)sout(o); //Object表示确定的类型
for (Object o: col2)
System.out.print("\t"+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("\t"+list.get(i)); System.out.println("\n------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("\t"+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("\nlink1: ");
for (Integer i:link1)
System.out.print("\t"+i);
System.out.print("\nlink2: ");
for (Object i:link2)
System.out.print("\t"+i);
}
}
ArrayList和LinkedList的测试结果:
--------Test ArrayList--------
6666777 6667 6666 6666
------Test ArrayList<String>----
6666777 6667 6666
link1: 666 7777
link2: 6666777 6667 6666