黑马程序员——JAVA基础之List集合
来源:互联网 发布:刷帮豆软件怎么下载 编辑:程序博客网 时间:2024/05/22 10:25
------- android培训、java培训、期待与您交流! ----------
Collection :
|--List:元素是有序的,元素可以重复。因为该集合体系有索引。
|--ArrayList:底层的数据结构使用的是数组结构。特点:查询速度很快。但是增删稍慢。线程不同步。
|--LinkedList:底层使用的链表数据结构。特点:增删速度很快,查询稍慢。线程不同步。
|--Vector:底层是数组数据结构。线程同步。被ArrayList替代了。因为效率低。
|--Set:元素是无序,元素不可以重复。
List:
特有方法。凡是可以操作角标的方法都是该体系特有的方法。
增
add(index,element); 在列表的指定位置插入指定元素
addAll(index,Collection); 将指定 collection 中的所有元素都插入到列表中的指定位置
import java.util.ArrayList;public class ListDemo {public static void main(String[] args){ArrayList al = new ArrayList();al.add("01");al.add("02");al.add("03");System.out.println(al);al.add(1,"04");System.out.println(al);ArrayList al1 = new ArrayList();al1.add("05");al1.add("06");System.out.println(al1);al.addAll(1,al1);System.out.println(al);}}
删
remove(index); 移除列表中指定位置的元素
import java.util.ArrayList;public class ListDemo {public static void main(String[] args){ArrayList al = new ArrayList();al.add("01");al.add("02");al.add("03");System.out.println(al);al.remove(1);System.out.println(al);}}
改
set(index,element); 用指定元素替换列表中指定位置的元素
import java.util.ArrayList;public class ListDemo {public static void main(String[] args){ArrayList al = new ArrayList();al.add("01");al.add("02");al.add("03");System.out.println(al);al.set(1,"04");System.out.println(al);}}
查
get(index): 返回列表中指定位置的元素。
subList(from,to); 返回列表中指定的之间的部分,包含头不包含尾
listIterator(); 返回此列表元素的列表迭代器(按适当顺序)。
int indexOf(obj):获取指定元素的位置。
listIterator(int index); 返回列表中元素的列表迭代器(按适当顺序),从列表的指定位置开始。
import java.util.ArrayList;import java.util.Iterator;import java.util.List;/** * * 获取集合中元素的方法演示 * */public class ListDemo {public static void main(String[] args){ArrayList al = new ArrayList();al.add("01");al.add("02");al.add("03");System.out.println(al);List sub = al.subList(0,2);System.out.println(sub);System.out.println("01 对应的角标是:"+al.indexOf("01"));for (int i=0;i<al.size();i++)//方法一{System.out.println(al.get(i));}for (Iterator it = al.iterator();it.hasNext(); )//方法2{System.out.println(it.next());}}}
List集合特有的迭代器。ListIterator是Iterator的子接口。
在迭代时,不可以通过集合对象的方法操作集合中的元素。因为会发生ConcurrentModificationException异常。所以,在迭代器时,只能用迭代器的方法操作元素,可是 Iterator方法是有限的,只能对元素进行判断,取出,删除的操作,如果想要其他的操作如添加,修改等,就需要使用其子接口,ListIterator。该接口只能通过List集合的listIterator方法获取。
import java.util.ArrayList;import java.util.ListIterator;/** * * ListIterator演示 * */public class ListDemo {public static void main(String[] args){ArrayList al = new ArrayList();al.add("01");al.add("02");al.add("03");System.out.println(al);ListIterator li = al.listIterator();System.out.println(li.hasNext());//判断后面有没有元素System.out.println(li.hasPrevious());//判断前面有没有元素//把集合里面的元素替换成另一种元素while (li.hasNext()){Object obj = li.next();if (obj.equals("02"))li.set("04");}System.out.println(li.hasNext());//判断后面有没有元素System.out.println(li.hasPrevious());//判断前面有没有元素System.out.println(al);}}
import java.util.ArrayList;import java.util.Iterator;/** * 去除ArrayList中的重复元素 * 定义一个临时容器储存 * 如果不相同存入,相同就不存 * 便利完成之后返回 */public class ArrayListTest{public static void main(String[] args){ArrayList al = new ArrayList();al.add("01");al.add("02");al.add("01");al.add("04");al.add("02");System.out.println(al+"------"+al.size());System.out.println(SingleElement(al));}//定义一个函数,返回一个ArrayList集合,参数ArrayList。功能是去除ArrayList中的重复元素.public static ArrayList SingleElement(ArrayList al){ArrayList arrayBuffer = new ArrayList();for (Iterator it = al.iterator();it.hasNext(); ){Object obj = it.next();if (!arrayBuffer.contains(obj)){arrayBuffer.add(obj);}}return arrayBuffer;}}
<span style="font-size:14px;"><strong></strong></span><pre class="java" name="code">import java.util.ArrayList;import java.util.Iterator;/** * 将自定义元素存到ArrayList结构中去,并去掉重复元素 * 比如:存人对象。同姓名同年龄,视为同一个人。为重复元素。 * * 思路: *对人描述,将数据封装进人对象。 *定义容器,将人存入。 *取出。 * List集合判断元素是否相同,依据是元素的equals方法。 */public class ArrayListTest{public static void main(String[] args){ArrayList al = new ArrayList();al.add(new Person("zhangsan",13));al.add(new Person("lisi",13));al.add(new Person("zhangsan",13));al.add(new Person("zhangsan",15));al.add(new Person("lisi",13));al.add(new Person("lisi",12));al = singleElement(al);for (Iterator it = al.iterator();it.hasNext(); ){Person p = (Person)it.next();System.out.println(p.getName()+"------"+p.getAge());}}//定义一个函数,返回ArrayList,参数ArrayList。函数功能去除ArrayList集合中的重复元素public static ArrayList singleElement(ArrayList al){ArrayList arrayBuffer = new ArrayList();for (Iterator it = al.iterator();it.hasNext(); ){if (!arrayBuffer.contains(it.next())){arrayBuffer.add(it.next());}}return arrayBuffer;}}//声明一个Person对象,具有年龄和名字的属性class Person{private String name;private int age;Person(String name,int age){this.name = name;this.age = age;} public boolean equals(Object obj) { if(!(obj instanceof Person)) return false; Person p = (Person)obj; return this.name.equals(p.name) && this.age == p.age; } public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}
LinkedList:特有方法:
addFirst(); 将指定元素插入此列表的开头。
addLast(); 将指定元素添加到此列表的结尾。
getFirst(); 返回此列表的第一个元素。
getLast(); 返回此列表的最后一个元素。
get方法获取元素,但不删除元素。如果集合中没有元素,会出现NoSuchElementException
removeFirst(); 移除并返回此列表的第一个元素。
removeLast(); 移除并返回此列表的最后一个元素。
remove方法获取元素,但是元素被删除。如果集合中没有元素,会出现NoSuchElementException
import java.util.LinkedList;/** * * LinkedList演示 * */public class ListDemo {public static void main(String[] args){LinkedList ll = new LinkedList();ll.add("02");ll.addFirst("01");ll.addLast("03");System.out.println(ll);System.out.println(ll.getFirst());System.out.println(ll.getLast());System.out.println(ll);System.out.println(ll.removeFirst());System.out.println(ll.removeLast());System.out.println(ll);//打印移出方式while (!ll.isEmpty()){System.out.println(ll.removeLast());}}}
在JDK1.6出现了替代方法:
offerFirst(); 在此列表的开头插入指定的元素。
offerLast(); 在此列表末尾插入指定的元素。
peekFirst(); 获取但不移除此列表的第一个元素;如果此列表为空,则返回 null。
peekLast(); 获取但不移除此列表的最后一个元素;如果此列表为空,则返回 null。
获取元素,但不删除元素。如果集合中没有元素,会返回null。
pollFirst(); 获取并移除此列表的第一个元素;如果此列表为空,则返回 null。
pollLast(); 获取并移除此列表的最后一个元素;如果此列表为空,则返回 null。
获取元素,但是元素被删除。如果集合中没有元素,会返回null。
堆栈和队列:
堆栈:先进后出 如同一个杯子。队列:先进先出 First in First out FIFO 如同一个水管。
import java.util.LinkedList;/** * * 用LinkedList模拟一个堆栈结构的 * */public class DuiZhanDemo {public static void main(String[] args){DuiZhan dz = new DuiZhan();dz.myAdd("01");dz.myAdd("02"); dz.myAdd("03");while (!dz.isNull()){System.out.println(dz.myGet());}}}//堆栈结构:先进后出class DuiZhan{private LinkedList link;DuiZhan(){link = new LinkedList();}public void myAdd(Object obj){link.addFirst(obj);}public Object myGet(){return link.removeFirst();}public boolean isNull(){return link.isEmpty();}}
------- android培训、java培训、期待与您交流! ----------
- 黑马程序员——JAVA基础之List集合
- 黑马程序员——java基础之List集合
- 黑马程序员 java基础之list集合
- 黑马程序员—java基础之集合
- 黑马程序员—JAVA基础之集合
- 黑马程序员-java基础之集合List,Set集合
- 黑马程序员——Java基础—集合(Set、List)
- 黑马程序员:Java基础——List集合的分支
- 黑马程序员 Java基础——List集合
- 黑马程序员—java基础_集合List和Set
- 黑马程序员————java基础---------集合之Collection与List
- 黑马程序员——java基础拾遗之集合框架(一) List 和 Set
- 黑马程序员 java基础之集合框架List
- 黑马程序员---java基础之集合框架及List
- 黑马程序员——集合之List
- 黑马程序员---Java基础---List集合
- 黑马程序员————java基础之集合
- 黑马程序员——Java基础之集合框架小结
- 网址备忘与分享
- 让你的HTML5&CSS3网站在老IE中也能正常显示的3种方法
- 你是山西煤老板-火车运煤
- Intersection of Two Linked Lists
- 第14周项目2(3)
- 黑马程序员——JAVA基础之List集合
- 图结构练习——判断给定图是否存在合法拓扑序列
- ios 线程
- VB6.0 对ACCESS的控制总结——无需控件版(建库,删库,建表,删表,增加行,删除行)
- 使用GCM服务(Google Cloud Messaging)实现Android消息推送
- 4. Dubbo原理解析-代理之接口定义
- Linux/Ubuntu学习笔记(六)--tomcat
- PowerDesigner导入java类生成类图
- 关于输入法的弹出与关闭