import java.util.ArrayList; import java.util.HashMap; /* 集合 1.可以动态保存任意多个对象,使用方便 2.提供了一系列方便操作对象的方法:add,remove,set,get.... 3.使用集合添加、删除元素代码更加简洁 集合体系 1.Collection(单列集合)重要子接口List,Set List Vector LinkedList Arraylist Set TreeSet HashSet 2.Map(双列集合)存放 K-V HashMap LinkedHashMap Hashtable Properties TreeMap */ @SuppressWarnings({"all"}) public class Collection_ { public static void main(String[] args) { ArrayList arrayList = new ArrayList(); arrayList.add("jack"); arrayList.add("tom");//单列集合 HashMap hashMap = new HashMap(); hashMap.put("NO1", "北京"); hashMap.put("NO2", "上海");//双列集合 } }
import java.util.ArrayList; import java.util.List; /* Collection接口和常用方法 public interface Collection<E> extends Iterable<E> 1.collection实现子类可以存放多个元素,每个元素可以是Object 2.有些Collection的实现类可以存放重复元素,有些不可以 3.有些Collection的实现类可以是有序的(List),有些不是有序的(Set) 4.Collection接口没有直接的实现子类,是通过它的子接口Set和List来实现的 Collection接口常用方法,以实现子类ArrayList来演示(因为接口不能直接实例化,实现接口的类才能实例化) 1.add //添加单个元素 2.remove //删除指定元素 3.contains //查找元素是否存在 4.size //获取元素个数 5.isEmpty //判断是否为空 6.clear //清空 7.addAll //添加多个元素 8.containsAll //查找元素是否都存在 9.removeAll //删除多个元素 */ @SuppressWarnings({"all"}) public class Collection02 { public static void main(String[] args) { List list = new ArrayList(); //add list.add("huang"); list.add(20);//本质 list.add(new Integer(10)) list.add(true); list.add('C'); System.out.println("list=" + list);//list=[huang, 20, true, C] //remove list.remove(0);//删除第一个元素 list.remove(true);//指定删除某个元素 System.out.println("list=" + list);//list=[20, C] //contains System.out.println(list.contains("jack"));//false //size System.out.println(list.size());//2 //isEmpty System.out.println(list.isEmpty());//false //clear list.clear(); System.out.println("list=" + list);//list=[] //addAll ArrayList list2 = new ArrayList(); list2.add("tom"); list2.add("smith"); list.addAll(list2); System.out.println("list=" + list);//list=[tom, smith] //containsAll System.out.println(list.containsAll(list2));//true //removeAll list2.removeAll(list); System.out.println("list2=" + list2);//list2=[] } }
/* Collection接口遍历元素方式 1.使用Iterator(迭代器) 1.Iterator对象称为迭代器,主要用于遍历Collection集合中的元素 2.所有实现了Collection接口的集合类都有iterator()方法,用以返回一个迭代器 3.Iterator结构 4.Iterator仅用于遍历集合,本身并不存放对象 Iterator接口常用方法 hasNext() //判断是否还有下一个元素 next() //1.指针下移2.将下移后集合位置上的元素返回 在调用iterator.next()方法之前必须要调用iterator.hasNext()进行检测 若不调用,如果下一条记录无效,直接调用会抛出NoSuchElementException异常 步骤 Iterator iterator = xxx.iterator()//得到一个集合的迭代器 while(iterator.hashNext()){ Object xx = iterator.next(); } //当退出while循环后 iterator迭代器指向最后一个元素 //若想重新遍历,需重置迭代器 iterator = xxx.iterator() //重置 2.使用增强for循环 增强for循环可以替代iterator迭代器,是简化版的iterator(底层仍是迭代器) 只能用于遍历集合或数组 基本语法 for(元素类型 元素名:集合名或数组名){ 访问元素 } */ import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class Collection03 { @SuppressWarnings({"all"}) public static void main(String[] args) { Collection col = new ArrayList(); col.add(new Book("西游记","吴承恩",11.11)); col.add(new Book("三国演义","罗贯中",22.22)); col.add(new Book("水浒传","施耐庵",33.33)); System.out.println(col); //遍历col集合 //使用迭代器 Iterator iterator = col.iterator();//得到col迭代器 // 使用while循环遍历 while(iterator.hasNext()){//判断是否还有数据 Object obj = iterator.next();//返回下一个元素,编译类型是Object,运行类型由存放的数据决定 System.out.println(obj); } //重置遍历 System.out.println("===========重置=========="); iterator = col.iterator(); while (iterator.hasNext()) { Object obj = iterator.next(); System.out.println(obj); } System.out.println("===========增强for循环=========="); //使用增强for循环 for(Object book : col){ System.out.println(book); } //增强for循环也可用于数组 int[] nums = {1,2,3,4,5,6,7}; for(int i : nums){ System.out.println(i); } } } class Book{ private String name; private String author; private double price; public Book(String name, String author, double price) { this.name = name; this.author = author; this.price = price; } @Override public String toString() { return "Book{" + "name='" + name + '\'' + ", author='" + author + '\'' + ", price=" + price + '}'; } }