澳门新蒲京娱乐


python3随笔day1
图片 7
利用开辟之Linq和EF

Java集合框架,泛型的优点

C#中有关泛型,有以下几点:

集结类存放于java.util包中,集结类存放的都以目的的引用,而非对象自己,出于表达上的惠及,我们称会集中的对象便是指集合中目标的引用(reference)

一、质量优化 2、类型安全 三、解决强制类型调换

会面类型首要有三种:set(集)、list(列表)和map(映射)

可是有几许要专注不是泛型的优点:泛型集结对所蕴藏的对象未有别的约束,能够储存任何类型。注意那是错的

浅显的说,集结就是四个放数据的器皿,精确的便是放多少对象引用的容器

Collection接口

Collection 是最核心的成团接口,二个 Collection 代表1组 Object,即
Collection
的成分,Java不提供第贰手接轨自Collection的类,只提供后续于的子接口(如List和set)

Collecton接口常用的子接口有:List接口、Set接口

List接口常用的子类有:ArrayList类、LinkedList类
Set接口常用的子类有:HashSet类、LinkedHashSet类如

接口多态的调用

Collection<String> collection = new ArrayList<String>();

图片 1

741560-20170330144456389-1484217347.png

注意
学学Java中三种长度表现方式

  • 数组.length 属性,返回值int
  • 字符串.length() 方法,返回值int
  • 集合.size()方法, 返回值int

Iterator接口

迭代器概述

java中提供了累累个聚众,它们在仓库储存成分时,采用的存款和储蓄情势分歧。
我们要抽取那些聚聚集的成分,可因此一种通用的拿走情势来实现

各种群集的尾部的数据结构不一样,比如ArrayList是数组,LinkedList底层是链表,可是不管使用那种群集,大家都会有咬定是不是有成分以及收取个中的要素的动作,那么Java为大家提供三个迭代器定义了联合的决断成分和取成分的艺术

  • hasNext()假定有成分得以迭代,则赶回true
  • next()回来迭代的下多少个因素

Iterator接口,找完结类,Collection接口定义方法,ArrayList重写方法iterator()返回了Iterator接口的兑现类的目的

public class Test {
    public static void main(String[] args) {
        Collection<String> collection = new ArrayList<String>();
        collection.add("cuzz1");
        collection.add("cuzz2");
        collection.add("cuzz3");
        collection.add("cuzz4");

        // 迭代器,对集合ArrayList中的元素进行取出
        // 调用集合iterator()方法取出,Iterator接口的实现类的对象
        Iterator<String> iterator = collection.iterator();
        // 接口的实现类对象,调用方法hasNext()判断集合中是否有元素
        boolean bool = iterator.hasNext();
        // 接口的实现类的对象,调用方法next()取出集合中的元素
        // String str = iterator.next();
        // System.out.println(str);

        // 迭代是反复的内容,使用循环实现
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }

    }
}

集合成分的转型

应用集结时,大家须要小心以下几点:

  • 聚聚集储存都以目标的地点,那会集能够储存基本数据类型吗?
    jdk一.5本子之后能够积存了,因为出现类基本类型包装类,能够活动装箱操作,那样集结中的成分正是着力数值的包装类对象
  • 存款和储蓄时提高了Object。抽出时要运用要素的特有内容,必须向下转型

public class Test {
    public static void main(String[] args) {
        // Collection<String> collection = new ArrayList<String>();
        // 不指定数据类型
        Collection collection = new ArrayList();
        collection.add("cuzz1");
        collection.add("cuzz2");
        collection.add("cuzz3");
        collection.add("cuzz4");
        Iterator iterator = collection.iterator();
        while (iterator.hasNext()){
            // 由于元素别放进集合后全部被提升为Object类型
            // 当需要使用子类特有的方法时,需要向下转型
            String str = (String) iterator.next();
            System.out.println(str.length());
        }
    }
}

注意假如集结中放的是多少个目标,那时进行向下转型会发生类型调换格外

增强for循环

JDK壹.5新特色,加强for循环,JDK1.伍本子后,出现新的接口
java.lang.Iterable
Collection开是一而再Iterable,Iterable功效,实现增加for循环
格式:
for( 数据类型 变量名 : 数组恐怕集结 ){
}

泛型

泛型的引进

在头里学习集结时,大家都知情集合中是可以存舍弃意对象的,只要把目标存款和储蓄群集后,那么此时他们都会被进步成Object类型。当我们在抽取每贰个目的,并且进行对应的操作,那时必须采取类型调换。举例上边程序:

public class Test {
    public static void main(String[] args) {
        List list = new ArrayList();
        list.add("abc");
        list.add("itcast");
        list.add(5);                        // 由于集合没有做任何限定,任何类型都可以给其中存放
                                            // 相当于:Object obj=new Integer(5);

        Iterator it = list.iterator();
        while(it.hasNext()){

         // 需要打印每个字符串的长度,就要把迭代出来的对象转成String类型
         String str = (String) it.next();   // String str=(String)obj;
                                            // 编译时期仅检查语法错误,String是Object的儿子可以向下转型
                                            // 运行时期String str=(String)(new Integer(5))
                                            // String与Integer没有父子关系所以转换失败
                                            // 程序在运行时发生了问题java.lang.ClassCastException
         System.out.println(str.length());
        }
    }
}

相关文章

No Comments, Be The First!
近期评论
    功能
    网站地图xml地图