关于集合List的总结
2015-05-09 09:55
155 查看
1、体系结构
├List
├LinkedList(重点)
├ArrayList (重点)
└Vector
2、List
a) List集合判断元素是否相同,依据是元素的equal方法
b) List集合特有的迭代器是ListIterator,ListIterator是Iterator的子接口。在迭代时,不可以通过集合对象的方法操作集合中的元素,因为会发生ConcurrentModificationException异常。
如果想要其他的操作(如添加元素、修改元素)就使用ListIterator
3、ArrayList
底层的数据结构使用的是数组,线程不同步。
代码示例:
4、LinkedList
底层的数据结构使用的是链表‘
特有方法:
1)添加元素
a) addFist(E e) //头插
b) addLast(E e) //尾插
a) offerFirst((E e)//在此列表的开头插入指定的元素。
b) offerLast(E e)//在此列表的结尾插入指定的元素。
2)获出元素
a) getFirst() //获取头元素
b) getLast() //获取尾元素
c) removeFirst()//获取头元素,但是删除该元素
d) removeLast()//获取尾元素,但是删除该元素
e) peekFirst()//获取头元素,但不删除元素,如果没有元素会返回null
f) peekLast()//获取尾元素,但不删除元素,如果没有元素会返回null
a) pollFirst()//获取头元素,但删除元素,如果没有元素会返回null
b) pollLast()//获取尾元素,但删除元素,如果没有元素会返回null
代码示例:
5、Vector
底层的数据结构使用的是数组,线程同步。
取出特有方式是枚举,与迭代器相似,其实是一样的,因为枚举的名称以及方法都太长,所以被迭代器取代了。
代码示例:
6、实例一:用LinkedList模拟一个堆栈数据结构
代码示例:
7、实例二:用LinkedList模拟一个队列数据结构
代码示例:
8、实例三:去除ArrayList集合中的重复元素
代码示例:
├List
├LinkedList(重点)
├ArrayList (重点)
└Vector
2、List
a) List集合判断元素是否相同,依据是元素的equal方法
b) List集合特有的迭代器是ListIterator,ListIterator是Iterator的子接口。在迭代时,不可以通过集合对象的方法操作集合中的元素,因为会发生ConcurrentModificationException异常。
如果想要其他的操作(如添加元素、修改元素)就使用ListIterator
3、ArrayList
底层的数据结构使用的是数组,线程不同步。
代码示例:
package collection; import java.util.*; public class ListDemo { /** * @param args */ public static void main(String[] args) { ArrayList al=new ArrayList(); //添加元素 al.add("java01"); al.add("java02"); al.add("java03"); al.add("java04"); //在指定的位置添加元素 al.add(2, "java002"); //删除指定位置的元素 al.remove(2); ///修改元素 al.set(3, "java0004"); /* for(int x=0;x<al.size();x++) { sop(al.get(x)); } Iterator it=al.iterator(); while(it.hasNext()) sop(it.next()); */ //通过indexOf获取对象的位置 ListIterator li=al.listIterator(); while(li.hasNext()) { Object obj=li.next(); if(obj.equals("java02")) //li.add("java00002"); li.set("22222222"); } sop(al); while(li.hasPrevious()) { sop(li.previous()); } } public static void sop(Object obj) { System.out.println(obj); } }
4、LinkedList
底层的数据结构使用的是链表‘
特有方法:
1)添加元素
a) addFist(E e) //头插
b) addLast(E e) //尾插
a) offerFirst((E e)//在此列表的开头插入指定的元素。
b) offerLast(E e)//在此列表的结尾插入指定的元素。
2)获出元素
a) getFirst() //获取头元素
b) getLast() //获取尾元素
c) removeFirst()//获取头元素,但是删除该元素
d) removeLast()//获取尾元素,但是删除该元素
e) peekFirst()//获取头元素,但不删除元素,如果没有元素会返回null
f) peekLast()//获取尾元素,但不删除元素,如果没有元素会返回null
a) pollFirst()//获取头元素,但删除元素,如果没有元素会返回null
b) pollLast()//获取尾元素,但删除元素,如果没有元素会返回null
代码示例:
package collection; import java.util.*; public class LinkedListDemo { /** * @param args */ public static void main(String[] args) { LinkedList link=new LinkedList(); link.addLast("java01"); link.addLast("java02"); link.addLast("java03"); link.addLast("java04"); //获取第一个元素 sop(link.getFirst()); //获取最后一个元素 sop(link.getLast()); //获取第一个元素并且删除这个元素 sop(link.removeFirst()); //打印集合 while(!link.isEmpty()) //sop(link.removeFirst()); sop(link.removeLast()); sop(link); } public static void sop(Object obj) { System.out.println(obj); } }
5、Vector
底层的数据结构使用的是数组,线程同步。
取出特有方式是枚举,与迭代器相似,其实是一样的,因为枚举的名称以及方法都太长,所以被迭代器取代了。
代码示例:
package collection; import java.util.*; /* * Vector 特有的方法:枚举 * * */ public class VectorDemo { /** * @param args */ public static void main(String[] args) { //定义集合 Vector v=new Vector(); v.add("java01"); v.add("java02"); v.add("java03"); v.add("java04"); //枚举 Enumeration en=v.elements(); while(en.hasMoreElements()) { System.out.println(en.nextElement()); } } }
6、实例一:用LinkedList模拟一个堆栈数据结构
代码示例:
package collection; import java.util.*; /** * *使用LinkedList模拟一个堆栈 * */ public class Stack { //定义一个集合 private LinkedList link; Stack() { link=new LinkedList(); } //头插法添加元素 public void myAdd(Object obj) { link.addFirst(obj); } //获取链表中开头处元素并删除 public Object myGet() { return link.removeFirst(); } //判断是否为空 public boolean isNull() { return link.isEmpty(); } }
7、实例二:用LinkedList模拟一个队列数据结构
代码示例:
package collection; import java.util.*; /** * * 使用LinkedList模拟一个队列 * */ public class Queue { //定义一个集合 private LinkedList link; Queue() { link=new LinkedList(); } //头插法添加元素 public void myAdd(Object obj) { link.addFirst(obj); } //获取链表中结尾处元素并删除 public Object myGet() { return link.removeLast(); } //判断是否为空 public boolean isNull() { return link.isEmpty(); } }
8、实例三:去除ArrayList集合中的重复元素
代码示例:
package collection; import java.util.*; public class ArrayListSingleElement { /** * @param args */ public static void main(String [] args) { ArrayList al=new ArrayList(); //添加元素 al.add(new PersonList("lisi01",22)); al.add(new PersonList("lisi01",22)); al.add(new PersonList("lisi02",32)); al.add(new PersonList("lisi02",22)); al.add(new PersonList("lisi02",22)); al=singleElement(al); Iterator it=al.iterator(); while(it.hasNext()) { PersonList pl=(PersonList)it.next(); sop(pl.getName()+":"+pl.getAge()); } } //去除重复元素 4000 public static ArrayList singleElement(ArrayList al) { ArrayList newAl=new ArrayList();//定义一个临时容器 Iterator it=al.iterator(); while(it.hasNext()) { Object obj=it.next(); if(!newAl.contains(obj)) newAl.add(obj); } return newAl; } //打印元素 public static void sop(Object obj) { System.out.println(obj); } }
相关文章推荐
- 关于list集合的小总结
- 关于DataTable与IList和List泛型集合的相互转换在网上总结
- 黑马程序员——关于Set,List,Map集合的简单总结
- 关于ASP.NET下,JQuery+AJAX使用JSON返回对象集合List数据的总结
- 关于迭代器,List集合具体对象的特点以及ListIterator学习总结
- 有关于java集合(set、list、map)的总结
- 关于集合子类父类关系的全面总结 ,以及遍历方法的总结 全
- [as3 学习笔记]关于as3 display list 的总结
- 集合总结笔记——ArrayList/LinkedList
- java 常用集合list与Set、Map区别及适用场景总结
- 关于集合List的remove方法
- java集合包List、Set、Map总结
- java 常用集合list与Set、Map区别及适用场景总结
- 黑马程序员--关于集合的一些总结
- set,list,map集合循环遍历用法总结
- 集合之List总结
- java 常用集合list与Set、Map区别及适用场景总结
- java 常用集合list与Set、Map区别及适用场景总结
- zgb老师关于java集合的总结
- 关于集合子类父类关系的全面总结 ,以及遍历方法的总结 全