本文共 6184 字,大约阅读时间需要 20 分钟。
2> 线程安全的,同步,执行效率低;
2> size()和get(int index)普通for循环;
举例:
public class ArrayListDemo { public static void main(String[] args) { //创建集合对象 ArrayList list = new ArrayList() ; //添加元素 list.add("hello") ; list.add("world") ; list.add("java") ; //遍历 //方式1:获取迭代器 Iterator it = list.iterator() ; while(it.hasNext()) { String s = (String)it.next() ; System.out.println(s); } System.out.println("-----------------------"); //方式2:使用size()和get(int index)加上for循环遍历 for(int x = 0 ; x < list.size() ; x ++) { String s = (String) list.get(x) ; System.out.println(s); } }}ArrayList集合存储自定义对象并遍历: 举例:
import java.util.ArrayList;import java.util.Iterator;/** * ArrayList集合存储自定义对象并遍历 */class Student { private String name ; private int age ; public Student() { super(); } public Student(String name, int age) { super(); this.name = name; this.age = 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; }}public class ArrayListDemo2 { public static void main(String[] args) { //创建集合对象 ArrayList array = new ArrayList(); //创建学生对象 Student s1 = new Student("鲁智深", 30) ; Student s2 = new Student("武松", 40) ; Student s3 = new Student("宋江", 50) ; Student s4 = new Student("杨志", 25) ; //添加元素 array.add(s1) ; array.add(s2) ; array.add(s3) ; array.add(s4) ; //迭代器方式 Iterator it = array.iterator() ; while(it.hasNext()) { Student s = (Student)it.next() ; System.out.println(s.getName()+"---"+s.getAge()); } System.out.println("--------------------"); //集合遍历 for(int x = 0 ; x综合练习:
package org.westos_05;import java.util.ArrayList;import java.util.Iterator;/** *需求:给集合中添加重复的元素(字符串类型),将重复的元素从集合去除掉! * *思路: * 1)创建一个旧集合,添加重复元素 * 2)创建一个新集合 * 3)遍历旧集合中的元素获取到每一个元素 * 在旧集合中判断新集合中是否包含旧集合中的元素 * 包含,不搭理 * 不包含,添加到新集合中 * * 4)遍历新集合 */public class ArrayListTest { public static void main(String[] args) { //创建一个集合 ArrayList list = new ArrayList() ; //添加元素 list.add("hello") ; list.add("world") ; list.add("java") ; list.add("javaee") ; list.add("hello") ; list.add("world") ; list.add("hello") ; list.add("javaee") ; list.add("android") ; list.add("python") ; list.add("php") ; list.add("php") ; //创建一个新的集合 ArrayList newList = new ArrayList() ; //遍历旧集合 Iterator it = list.iterator() ; while(it.hasNext()) { String s = (String) it.next() ; //判断新集合中是否包含旧集合中的元素 if(!newList.contains(s)) { newList.add(s) ; } } //遍历新集合 Iterator it2 = newList.iterator() ; while(it2.hasNext()) { String s = (String) it2.next() ; System.out.println(s); } }}注意: 1> 如果上述例题允许创建一个新的集合,怎么办?
//使用双层for循环来求解://引入选择排序,两个两个比较,要是相等,那么久删除后边的元素,继续循环判断,知道程序结束for(int x = 0 ; x < array.size()-1 ; x ++) { for(int y = x +1 ; y < array.size() ; y ++) { //判断,前面的索引对应的元素和后面索引对应的元素进行比较,如果相等就干掉后面重复的 if(array.get(x).equals(array.get(y))) { array.remove(y) ; y-- ; } }}2> 使用集合ArrayList存储自定义对象(Student),去除重复的对象: 问题:这里如果在Student类中没有重写equals方法,那么程序执行错误; 原因:contains的底层需要用equals,equals默认比较的是地址值,所以想要内容相等就需要 重写equals方法;
//创建一个新集合ArrayList newArray = new ArrayList() ; //遍历旧集合Iterator it = array.iterator() ;while(it.hasNext()) { Student s = (Student)it.next() ; //判断,新集合中是否包含 if(!newArray.contains(s)) { //contains底层依赖于equals方法,想要比较内容需要重写equals方法; newArray.add(s) ; }} //遍历新集合Iterator it2 = newArray.iterator() ;while(it2.hasNext()) { Student s= (Student)it2.next(); System.out.println(s.getName()+"---"+s.getAge());}
Object nextElement() --->相当于:Object next() ;
举例:
import java.util.Enumeration;import java.util.Vector;public class VectorDemo { public static void main(String[] args) { //创建集合对象 Vector v = new Vector() ; //添加元素 v.addElement("hello"); v.addElement("world"); v.addElement("java"); //遍历 //获取Enumeration :向量的枚举 Enumeration en = v.elements() ; while(en.hasMoreElements()) { String s = (String)en.nextElement() ; System.out.println(s); } }}
举例:
import java.util.LinkedList;public class LinkedListDemo { public static void main(String[] args) { //创建LinkedList集合对象 LinkedList link = new LinkedList() ; //添加元素 link.add("hello"); link.add("world"); link.add("java"); System.out.println("link:"+link); //addFirst(Object e):将指定的元素插入到列表的开头 link.addFirst("android"); System.out.println("link:"+link); //addLast(object e):将指定的元素添加到列表末尾 link.addLast("mysql"); System.out.println("link:"+link); //getFirst():获取列表第一个元素 System.out.println(link.getFirst()); System.out.println(link.getLast()); //public Object removeFirst()移除并返回此列表的第一个元素。 System.out.println("removeFirst():"+link.removeFirst()); System.out.println("link:"+link); //public Object removeLast() System.out.println("removeLast():"+link.removeLast()); System.out.println("link:"+link); }}
使用LinkedList模拟一个栈:(先进后出);
举例:
package org.westos_04;import java.util.Iterator;import java.util.LinkedList;/** * 需求: * 模拟栈结构的特点,先进后出 * * 理解:需要自定义一个类,在这个类中使用LinkedList集合的特有功能进行操作 * * */public class LinkedListDemo { public static void main(String[] args) { //创建linkedList集合对象 LinkedList link = new LinkedList() ; //添加元素 //符合栈结构的特点:先进后出 link.addFirst("hello"); link.addFirst("world"); link.addFirst("java"); //使用迭代器遍历 Iterator it = link.iterator() ; while(it.hasNext()) { String s = (String)it.next(); System.out.println("s:"+s); } }}
转载地址:http://vozad.baihongyu.com/