黑马程序员_java基础之集合(collection及其子类)

来源:互联网 发布:大学生网络惨案 编辑:程序博客网 时间:2024/06/04 19:15

------- android培训、java培训、期待与您交流! ----------

1.集合

      在java中,有多个容器, 比如有 数组, 字符串缓冲区, 还有我们要学习的集合, 其实集合它就是个容器,用来存储多个数据的

1.1分类:    Collection(接口)  

 List(接口)

                                                         ArrayList(具体类)

                                                        Vector(具体类)

                                                        LinkedList(具体类)

                                              Set(接口)

                                                        HashSet(具体类)

                                                        TreeSet(具体类)

1.2数组与集合的区别:   

数组: 长度固定           集合: 长度可变

1.3Collection(接口)的方法:

      添加功能:

           booleanadd(Object e) 向当前集合中添加给定的元素对象

           booleanaddAll(Collection c) 向当前集合中添加给定的集合元素

     删除功能:

           void clear()  把当前集合中的元素清空

           boolean remove(Object o) 把当前集合中,给定的元素对象删除

           boolean removeAll(Collection c) 在当前集合中, 将给定的集合元素 删除

     判断功能:

            boolean contains(Object o) 判断当前集合中,是否包含给定的元素对象   

            boolean containsAll(Collection c) 判断当前集合中,是否包含给定的集合中的元素对象

           boolean isEmpty() 判断当前集合是否为空的集合

     遍历功能:

           Iterator iterator() 迭代器, 作用就是用来遍历集合的, 得到集合中的每一个元素    

     交集功能:

           boolean retainAll(Collection c)  获取当前集合与给定集合中 交集的元素对象    

     长度功能:

           int size() 获取集合中元素的个数 

     转换功能:

           Object[] toArray() 把当前集合中的元素, 转存到 数组中

package cn.bean;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.ListIterator;public class ListStudent {public static void main(String[] args) {List list = new ArrayList();Student s1 = new Student("111",1);Student s2 = new Student("222",2);list.add(s1);list.add(s2);method1(list);method2(list);method3(list);method4(list);}private static void method4(List list) {for(int i= 0;i<list.size();i++){System.out.println(list.get(i));}}private static void method3(List list) {ListIterator it = list.listIterator();while(it.hasNext()){System.out.println(it.next());}}private static void method2(List list) {for(Iterator it = list.iterator();it.hasNext();){System.out.println(it.next());}}private static void method1(List list) {Object[] obj = list.toArray();for (int i = 0;i<obj.length;i++){System.out.println(obj[i]);}}}package cn.bean;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;}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 String toString() {return "Student [name=" + name + ", age=" + age + "]";}}

2. 泛型: Generic

     好处:

           1:可以把代码运行的时候才能看到的错误,提前到,编写代码的阶段

           把运行期的错误,提前到编译期

           2:省去了强制转换的麻烦

            3:有效的避免了类型转换异常 ClassCastException

package cn.mygeneric;public class MyGenericDemo {public static void main(String[] args) {MyGeneric<Person> mg = new MyGeneric<Person>();Person p1 = new Person("001","小李");//Person p2 = new Person("002","小红");mg.setA(p1);//mg.setA(p2);System.out.println(mg.getA());}}package cn.mygeneric;public class Person {private String id;private String name;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Person() {super();}public Person(String id, String name) {super();this.id = id;this.name = name;}public String toString() {return "Person [id=" + id + ", name=" + name + "]";}}

3. ArrayList、 Vector、 LinkedList三者的区别

     ArrayList:

              底层: 采用数组结构

              特点: 线程不同步-- 不安全--效率高】

                     增删慢,查找快

              jdk1.2

       Vector:

              底层: 采用数组结构

              特点: 线程同步 -- 安全 --效率低

                      增删慢,查找快

              jdk1.0

       LinkedList:

              底层: 采用链表结构

              特点: 线程不同步-- 不安全--效率高

                      增删快,查找慢

              jdk1.2

数组中有length方法吗? 字符串中有length()方法吗? 集合中有length()方法吗?

       答:数组中没有length方法,有的是length属性

        字符串中有length方法

         集合中没有length方法, 有的是 size方法

package cn.ArrayListTest;import java.util.ArrayList;import java.util.List;import java.util.ListIterator;public class ArrayListDemop {public static void main(String[] args) {List<Person> list = new ArrayList<Person>();Person p1 = new Person("AAA",222);Person p2 = new Person("AA",22);Person p3 = new Person("A",2);list.add(p1);list.add(p2);list.add(p3);for(ListIterator<Person> it = list.listIterator();it.hasNext();){Person p = it.next();System.out.println(p);//for(int i = 0 ;i<list.size();i++){//Person p = list.get(i);//System.out.println(p);//}}}}package cn.ArrayLisetForeach;public class Person {private String name;private int age;public Person() {super();}public Person(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;}@Overridepublic String toString() {return "Person [name=" + name + ", age=" + age + "]";}}

4.增强for循环

package cn.ArrayLisetForeach;import java.util.ArrayList;public class ForEachTest {public static void main(String[] args) {ArrayList<Person> list = new ArrayList<Person>();Person p1 = new Person("小名",12);Person p2 = new Person("小啊",13);Person p3 = new Person("小哦",14);list.add(p1);list.add(p2);list.add(p3);for (Person person : list) {System.out.println(person);}}}package cn.ArrayLisetForeach;public class Person {private String name;private int age;public Person() {super();}public Person(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;}@Overridepublic String toString() {return "Person [name=" + name + ", age=" + age + "]";}}







0 0
原创粉丝点击