Collection

来源:互联网 发布:sql count1什么意思 编辑:程序博客网 时间:2024/06/10 14:54
import java.util.ArrayList;import java.util.Collection;/* * 集合的由来: * 我们学习的是面向对象语言,而面向对象语言对事物的描述是通过对象体现的,为了方便对多个对象进行操作,我们就必须把这多个对象进行存储。 * 而要想存储多个对象,就不能是一个基本的变量,而应该是一个容器类型的变量,在我们目前所学过的知识里面,有哪些是容器类型的呢? * 数组和StringBuffer。但是呢?StringBuffer的结果是一个字符串,不一定满足我们的要求,所以我们只能选择数组,这就是对象数组。 * 而对象数组又不能适应变化的需求,因为数组的长度是固定的,这个时候,为了适应变化的需求,Java就提供了集合类供我们使用。 *  * 数组和集合的区别? * A:长度区别 * 数组的长度固定 * 集合长度可变 * B:内容不同 * 数组存储的是同一种类型的元素 * 而集合可以存储不同类型的元素 * C:元素的数据类型问题 * 数组可以存储基本数据类型,也可以存储引用数据类型 * 集合只能存储引用类型 *  * 数据结构:数据的存储方式。 *  * Collection:是集合的顶层接口,它的子体系有重复的,有唯一的,有有序的,有无序的。(后面会慢慢的讲解) *  * Collection * List * ArrayList * Vector * LinkedList * Set * HashSet * TreeSet *  * Collection的功能概述: * 1:添加功能 * boolean add(Object obj):添加一个元素 * boolean addAll(Collection c):添加一个集合的元素 * 2:删除功能 * void clear():移除所有元素 * boolean remove(Object o):移除一个元素 * boolean removeAll(Collection c):移除一个集合的元素(是一个还是所有) * 3:判断功能 * boolean contains(Object o):判断集合中是否包含指定的元素 * boolean containsAll(Collection c):判断集合中是否包含指定的集合元素(是一个还是所有) * boolean isEmpty():判断集合是否为空 * 4:获取功能 * Iterator<E> iterator()(重点) * 5:长度功能 * int size():元素的个数 * 面试题:数组有没有length()方法呢?字符串有没有length()方法呢?集合有没有length()方法呢? * 6:交集功能 * boolean retainAll(Collection c):两个集合都有的元素?思考元素去哪了,返回的boolean又是什么意思呢? * 7:把集合转换为数组 * Object[] toArray() */public class CollectionDemo {public static void main(String[] args) {// 测试不带All的方法// 创建集合对象// Collection c = new Collection(); //错误,因为接口不能实例化Collection c = new ArrayList();// boolean add(Object obj):添加一个元素// System.out.println("add:"+c.add("hello"));c.add("hello");c.add("world");c.add("java");// void clear():移除所有元素// c.clear();// boolean remove(Object o):移除一个元素// System.out.println("remove:" + c.remove("hello"));// System.out.println("remove:" + c.remove("javaee"));// boolean contains(Object o):判断集合中是否包含指定的元素 System.out.println("contains:"+c.contains("hello"));// System.out.println("contains:"+c.contains("android"));// boolean isEmpty():判断集合是否为空// System.out.println("isEmpty:"+c.isEmpty());//int size():元素的个数System.out.println("size:"+c.size());System.out.println("c:" + c);}}


import java.util.ArrayList;import java.util.Collection;/* * boolean addAll(Collection c):添加一个集合的元素 * boolean removeAll(Collection c):移除一个集合的元素(是一个还是所有) * boolean containsAll(Collection c):判断集合中是否包含指定的集合元素(是一个还是所有) * boolean retainAll(Collection c):两个集合都有的元素?思考元素去哪了,返回的boolean又是什么意思呢? */public class CollectionDemo {public static void main(String[] args) {// 创建集合1Collection c1 = new ArrayList();c1.add("abc1");c1.add("abc2");// 创建集合2Collection c2 = new ArrayList();//c2.add("abc1");//c2.add("abc2");c2.add("abc3");c2.add("abc4");c2.add("abc5");// boolean addAll(Collection c):添加一个集合的元素// System.out.println("addAll:" + c1.addAll(c2));//boolean removeAll(Collection c):移除一个集合的元素(是一个还是所有)//只要有一个元素被移除了,就返回true。//System.out.println("removeAll:"+c1.removeAll(c2));//boolean containsAll(Collection c):判断集合中是否包含指定的集合元素(是一个还是所有)//只有包含所有的元素,才叫包含// System.out.println("containsAll:"+c1.containsAll(c2));//boolean retainAll(Collection c):两个集合都有的元素?思考元素去哪了,返回的boolean又是什么意思呢?//假设有两个集合A,B。//A对B做交集,最终的结果保存在A中,B不变。//返回值表示的是A是否发生过改变。System.out.println("retainAll:"+c1.retainAll(c2));System.out.println("c1:" + c1);System.out.println("c2:" + c2);}}

import java.util.ArrayList;import java.util.Collection;/* * 集合的遍历。其实就是依次获取集合中的每一个元素。 * Object[] toArray():把集合转成数组,可以实现集合的遍历 */public class CollectionDemo {public static void main(String[] args) {// 创建集合对象Collection c = new ArrayList();// 添加元素c.add("hello"); // Object obj = "hello"; 向上转型c.add("world");c.add("java");// 遍历// Object[] toArray():把集合转成数组,可以实现集合的遍历Object[] objs = c.toArray();for (int x = 0; x < objs.length; x++) {// 我知道元素是字符串,我在获取到元素的的同时,还想知道元素的长度。// System.out.println(objs[x] + "---" + objs[x].length());// 上面的实现不了,原因是Object中没有length()方法// 我们要想使用字符串的方法,就必须把元素还原成字符串// 向下转型String s = (String) objs[x];System.out.println(s + "---" + s.length());}}}

import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;/* * Iterator iterator():迭代器,集合的专用遍历方式 * Object next():获取元素,并移动到下一个位置。 * NoSuchElementException:没有这样的元素,因为你已经找到最后了。 * boolean hasNext():如果仍有元素可以迭代,则返回 true。( */public class IteratorDemo {public static void main(String[] args) {// 创建集合对象Collection c = new ArrayList();// 创建并添加元素// String s = "hello";// c.add(s);c.add("hello");c.add("world");c.add("java");// Iterator iterator():迭代器,集合的专用遍历方式Iterator it = c.iterator(); // 实际返回的肯定是子类对象,这里是多态// 最终版代码while (it.hasNext()) {// System.out.println(it.next());String s = (String) it.next();System.out.println(s);}}}




public class Student {// 成员变量private String name;private int age;// 构造方法public Student() {super();}public Student(String name, int age) {super();this.name = name;this.age = age;}// 成员方法// getXxx()/setXxx()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;}@Overridepublic String toString() {return "Student [name=" + name + ", age=" + age + "]";}}

import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;/* * 问题1:能用while循环写这个程序,我能不能用for循环呢? * 问题2:不要多次使用it.next()方法,因为每次使用都是访问一个对象。 */public class IteratorTest {public static void main(String[] args) {// 创建集合对象Collection c = new ArrayList();// 创建学生对象Student s1 = new Student("林青霞", 27);Student s2 = new Student("风清扬", 30);Student s3 = new Student("令狐冲", 33);Student s4 = new Student("武鑫", 25);Student s5 = new Student("刘晓曲", 22);// 把学生添加到集合中c.add(s1);c.add(s2);c.add(s3);c.add(s4);c.add(s5);// 遍历Iterator it = c.iterator();while (it.hasNext()) {Student s = (Student) it.next();System.out.println(s.getName() + "---" + s.getAge());// NoSuchElementException 不要多次使用it.next()方法// System.out.println(((Student) it.next()).getName() + "---"// + ((Student) it.next()).getAge());}// System.out.println("----------------------------------");// for循环改写// for(Iterator it = c.iterator();it.hasNext();){// Student s = (Student) it.next();// System.out.println(s.getName() + "---" + s.getAge());// }}}



0 0
原创粉丝点击