黑马程序员——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。
ArrayList与Vector的区别?
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
- 黑马程序员——集合框架-List
- 黑马程序员——集合框架&List
- 黑马程序员——集合框架&List
- 黑马程序员——List集合
- 黑马程序员——集合之List
- 黑马程序员——集合框架2:List集合
- 黑马程序员,集合List
- 黑马程序员-List集合
- 黑马程序员-------集合List
- 黑马程序员--List集合
- 黑马程序员-List集合
- 黑马程序员---- list 集合
- 黑马程序员————List集合概述、Arrayist集合、Vector集合、LinkedList集合简述
- 黑马程序员——【Java】集合框架——List
- 黑马程序员——集合——List、Set、泛型
- 黑马程序员——Java集合框架—List
- 黑马程序员——Java基础—集合(Set、List)
- 黑马程序员_java集合框架——List
- 《Thinking in JAVA》读书笔记_第二章_2.1
- HDU 2013 2014 2015 2016
- ARM处理器模式
- mysql数据库的连接和操作
- 真实世界中的 Rails,第 3 部分: 优化 ActiveRecord
- 黑马程序员——List集合
- HttpClient 4.xx 读取网页
- 杭电2090 算菜价
- 简单工厂模式
- UVA 442-Matrix Chain Multiplication(栈的运用)
- 真实世界中的 Rails,第 2 部分: 高级页面缓存
- springMVC之RedirectAttributes
- 真实世界中的 Rails: Rails 中的缓存
- eclipse字体颜色设置的方法