集合(一)Collection

xiaoxiao2021-02-28  103

集合:

1.集合的由来: 面向对象语言对事物的描述是通过对象体现出来的,如果要存储多个对象,不能使用基本的变量,而应该使用容器类型的变量,  * 目前位置学习过哪些容器变量?数组,StringBuffer,但是StringBuffer始终返回的是一个字符串,可能不是我们想要的结果;  数组的长度是固定的,不能满足长度变化的需求,  * java就提供了----集合,满足长度变化的需求!

 ***********面试题:

 集合和数组的区别:  1)长度的区别:  数组:长度是固定的  集合:长度是可变的  2)内容的区别:  数组储存的是同一类型的元素:举例:水杯中的水  集合储存的是不同类型的元素,举例:杯子例加水加可乐  3)存储数据类型的区别:  数组可以储存基本数据类型,也可以储存引用数据类型  集合只能存储引用数据类型 集合是可以存储多个元素的,但是有时候需求发生变化,给集合中存储元素,但是不能让元素重复, 或者让元素按照某种规则排序,需求不断地变化,java提供了多个集合类,   每一个集合类数据结构不同,数据结构不同不重要的,重要的是能够存储东西,   并且开发者还可使用这些东西,多个集合类他们的共性的功能,将共性的内容向上抽取   ----------->集合继承体系图!    数据结构:存储的数据的方式  2.Collection:Collection 层次结构 中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。   一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。  JDK 不提供此接口的任何直接 实现:它提供更具体的子接口(如 Set 和 List)实现,而这里子接口中又有自己的子实现类!  添加功能:   boolean add(Object e):给集合中添加一个元素   boolean addAll(Collection c):添加一个集合中的元素   删除功能:   void clear()移除此 集合 中的所有元素   boolean remove(Object o):删除此集合中的指定的元素   boolean removeAll(Collection c)移除一个集合中的元素 (删除那些也包含在指定 collection 中的所有元素 (思考:删除一个集合中所有元素才算删除还是删除一个算是删除)?//删除一个算是删除   判断功能:   boolean contains(Object o):判断是集合中是否包含指定的元素   boolean containsAll(Collection c):(思考:包含一个元素算是包含还是包含所有算是包含?)//包含所有算是包含         boolean isEmpty():判断集合是否为空   获取功能:  Iterator iterator():迭代器   交集功能  boolean retainAll(Collection c):(A集合对B集合去交集,交集的元素去哪里?返回值boolean在这里表示什么意思?)      获取集合中的元素数   int size()

  面试题:

数组中有没有length(),String类中有没有length(),集合中有没有length()方法?   数组中:length属性,   String类中:有length()方法,获取字符串的长度 集合中没有length()方法,获取集合的元素的方法:size()

  数组中:length属性,   String类中:有length()方法,获取字符串的长度 集合中没有length()方法,获取集合的元素的方法:size() 代码: import java.util.ArrayList; import java.util.Collection; /**  * boolean addAll(Collection c):添加一个集合中的元素  * boolean removeAll(Collection c)移除一个集合中的元素 (删除那些也包含在指定 collection 中的所有元素  (思考:删除一个集合中所有元素才算删除还是删除一个算是删除)?  * boolean containsAll(Collection c):(思考:包含一个元素算是包含还是包含所有算是包含?)  * boolean retainAll(Collection c):(A集合对B集合去交集,交集的元素去哪里?返回值boolean在这里表示什么意思?)  返回值类型boolean在这里表示的是A集合中的元素是否发生变化!  * */ public class CollectionDemo { public static void main(String[] args) { //创建两个集合对象 Collection c1 = new ArrayList(); //给c1集合中添加元素 c1.add("abc1") ; c1.add("abc2") ; c1.add("abc3") ; c1.add("abc4") ; Collection  c2 = new ArrayList(); //给c2集合中添加元素 c2.add("abc1") ; c2.add("abc2") ; // c2.add("abc3") ; // c2.add("abc4") ; c2.add("abc5") ; c2.add("abc6") ; c2.add("abc7") ; c2.add("abc8") ; // boolean addAll(Collection c):添加一个集合中的元素 System.out.println("addAll:"+c1.addAll(c2)); // boolean removeAll(Collection c)移除一个集合中的元素 (删除那些也包含在指定 collection 中的所有元素(思考:删除一个集合中所有元素才算删除还是删除一个算是删除)? //包含一个元素算是删除! // System.out.println("removeAll:"+c1.removeAll(c2)); //boolean containsAll(Collection c):(思考:包含一个元素算是包含还是包含所有算是包含?):包含一个集合中的所有元素才算包含! // System.out.println("containsAll:"+c1.containsAll(c2)); //boolean retainAll(Collection c):(A集合对B集合去交集,交集的元素去哪里?返回值boolean在这里表示什么意思?) /**注意: * 如果一个A集合对B集合取交集,那么交集的元素要存储A里面,返回值类型boolean在这里 * 表示的是A集合中的元素是否发生变化! * */ // System.out.println("retainAll:"+c1.retainAll(c2)); System.out.println("c1:"+c1); System.out.println("c2:"+c2); } 3. 集合中的一个转换功能:  Object[] toArray():将集合转换成数组,利用这个功能就可以完成集合对元素的遍历  代码:  import java.util.ArrayList; import java.util.Collection; public class CollectionDemo2 { public static void main(String[] args) { //创建集合对象 Collection c=new ArrayList();//抽象多态,Collection是抽象类不能直接实例化 //给集合中添加元素 c.add("Good"); c.add("Good"); c.add("Study"); //将集合转换成数组 Object[] objs=c.toArray(); //遍历数组 for(int x=0;x<objs.length;x++){ //需求:我要得到字符串的同时,还要得到字符串的长度 //length(),字符串中特有的功能:长度功能 //强制类型转换 String s=(String) objs[x]; System.out.println(s+","+s.length()); } } } 4. Iterator iterator():迭代器 集合中的专用迭代遍历方式   Iterator接口:            Object next()返回迭代的下一个元素,获取元素           单独使用next()会报异常:java.util.NoSuchElementException:没有这样元素的异常!,现在元素已经获取到最后了   boolean hasNext():如果有下一个可以迭代的元素,请进行获取,判断功能 将上面把集合转化成数组进行遍历的代码用迭代器改进 import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class IteratorDemo { public static void main(String[] args) { //创建集合对象 Collection c=new ArrayList(); //给集合添加元素 c.add("Good"); c.add("Good"); c.add("Study"); //使用迭代器进行数组遍历 Iterator it=c.iterator(); //方式一: //获取下一个元素 // Object obj=it.next(); // System.out.println(obj); // System.out.println(it.next()); // System.out.println(it.next()); // System.out.println(it.next());//出现异常 //java.util.NoSuchElementException:没有这样元素的异常!,现在元素已经获取到最后了 //方式二: //优化改进,增加判断功能, boolean hasNext():如果有下一个可以迭代的元素,猜进行获取,判断功能 if(it.hasNext()){ System.out.println(it.next()); } if(it.hasNext()){ System.out.println(it.next()); } if(it.hasNext()){ System.out.println(it.next()); } if(it.hasNext()){ System.out.println(it.next()); } System.out.println("................."); // 方式3 // 方式2 代码重复率高,使用while 循环 Iterator it2=c.iterator(); while(it2.hasNext()){ String s=(String) it2.next(); System.out.println(s+","+s.length()); } } } 5.练习 获取5个学生的信息并存储到数组中 public class Student {     private String name;     private int age; public Student() { super(); } 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 Student(String name, int age) { super(); this.name = name; this.age = age; } } //测试类 import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class IteratorTest { public static void main(String[] args) { //创建集合对象 Collection c=new ArrayList(); //创建Student对象 Student s1=new Student("小红",23); Student s2=new Student("小方",22); Student s3=new Student("小名",21); Student s4=new Student("小军",27); Student s5=new Student("小例",24); //给集合添加元素 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()); } } }
转载请注明原文地址: https://www.6miu.com/read-49570.html

最新回复(0)