黑马程序员——List集合

来源:互联网 发布:linux编辑hosts 编辑:程序博客网 时间:2024/06/05 19:20
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

List的三个子类的特点

ArrayList,在开发中,在学习中用的最多。

ArrayList底层就是使用数组实现。

特点:查询性能高,插入或删除性能低

LinkedList 

LinkedList底层是链表实现。

特点:查询性能低,插入或删除性能高

Vector

Vector底层也是使用数组实现。

在实际开发中现在已经不合适Vector.

为了保证同步,我们一般也不使用Vector,而是使用同步的ArrayList。

ArrayListVector的区别?

ArrayList是异步的----安全性差,性能高

Vector是同步的------安全性高,性能低。


ArrayList存储字符串并遍历

package cn.itcast.arrayList;import java.util.ArrayList;import java.util.Iterator;import java.util.ListIterator;//ArrayList存储字符串并遍历public class ArrayListDemo1 {public static void main(String[] args) {// 1.创建一个ArrayList集合ArrayList list = new ArrayList();// 2.向集合中添加元素 Stringlist.add("tom");list.add("fox");list.add("james");// 3.遍历list集合// 第一种for (int i = 0; i < list.size(); i++) {String s = (String) list.get(i); //强制转换System.out.println(s);}// 第二种for (Iterator it = list.iterator(); it.hasNext();) {String s = (String) it.next(); //强制转换System.out.println(s);}// 第三种for (ListIterator lit = list.listIterator(); lit.hasNext();) {String s = (String) lit.next();//强制转换System.out.println(s);}}}

ArrayList存储自定义对象并遍历

package cn.itcast.arrayList;import java.util.ArrayList;import java.util.Iterator;//向ArrayList中存储三个Student对象,并遍历public class ArrayListDemo2 {public static void main(String[] args) {// 1.创建ArrayListArrayList list = new ArrayList();// 2.向集合中添加元素list.add(new Student(1, "tom", "男"));list.add(new Student(2, "fox", "男"));list.add(new Student(3, "kobe", "男"));//3.遍历集合//在开发中我们一般使用比较多的方式是1.for+size+get   2.Iterator//3.1使用for+size+get// for (int i = 0; i < list.size(); i++) {// Student s=(Student)list.get(i); //集合中是什么类型,我们在使用时就转换成什么类型// System.out.println(s.getId()+"  "+s.getName());// }//3.2迭代器for(Iterator it=list.iterator();it.hasNext();){Student s=(Student)it.next();System.out.println(s);}}}

LinkedList的特有功能

package cn.itcast.linkedlist;import java.util.Iterator;import java.util.LinkedList;//LinkedList介绍public class LinkedListDemo1 {public static void main(String[] args) {// 1.创建一个LinkedListLinkedList ll = new LinkedList();// 2.向集合中添加元素ll.add("a");ll.add("b");ll.add("c");ll.add("d"); 3.遍历for(Iterator it=ll.iterator();it.hasNext();){ String s=(String) it.next();System.out.println(s); } for(int i=0;i<ll.size();i++){ System.out.println(ll.get(i)); } System.out.println("获取头元素:"+ll.getFirst()); System.out.println("获取尾元素:"+ll.getLast()); ll.removeFirst(); //将头元素remove System.out.println(ll); ll.removeLast(); //将尾元素remove System.out.println(ll);ll.addFirst("first"); //添加头元素System.out.println(ll);ll.addLast("end");ll.add("e");System.out.println(ll);}}/** * LinkedList底层实现是链表。 在API中我们知道 LinkedList可以直接对头元素或尾元素进行 get,remove,insert操作. *  * 对头尾元素进行get操作. getFirst getLast 对头尾元素进行remove操作 removeFirst removeLast * 对头尾元素进行insert操作 addFirst addLast *  */

去除ArrayList集合中重复自定义对象元素案例


                                      实现原理 
package cn.itcast.listTest;import java.util.ArrayList;//去除ArrayList中重复的Student对象.public class ArrayListTest3 {public static void main(String[] args) {// 1.创建一个ArrayList集合ArrayList list = new ArrayList();// 2.向集合中添加元素Student s1 = new Student(1, "tom");Student s2 = new Student(2, "fox");Student s3 = new Student(3, "james");Student s4 = new Student(2, "fox");list.add(s1);list.add(s2);list.add(s3);list.add(s4);// 3.判断集合中是否有重复的元素,如果有重复remove。// 问题:ArrayList集合中元素的重复,“重复”的概念是什么?// /我们需要重写equals方法.// 问题:怎样重写equals?// Student s5 = new Student(2, "fox");// System.out.println(list.contains(s5));for (int i = 0; i < list.size() - 1; i++) {for (int j = i + 1; j < list.size(); j++) {Student ss1 = (Student) list.get(i);Student ss2 = (Student) list.get(j);if (ss1.equals(ss2)) { // ss1==ss2// 注意:如果重定了equals方法,在比较时,就比较的是属性。list.remove(j);j--;}}}System.out.println(list);}}// 补充:如果使用contains方法来判断 是否重复,也需要重写equals方法。class Student {private int id;private String name;public Student(int id, String name) {super();this.id = id;this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Student [id=" + id + ", name=" + name + "]";}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + id;result = prime * result + ((name == null) ? 0 : name.hashCode());return result;}}


 



0 0
原创粉丝点击