接口三

Posted 挽你何用

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口三相关的知识,希望对你有一定的参考价值。

Iterator接口
Iterator为了统一江湖, 从此出现了
所有实现了Collection接口的容器都有一个iterator方法, 用来返回一个实现了Iterator接口的对象
Iterator对象称作迭代器, 用来方便的实现对容器内的元素的遍历
Iterator里面的三个方法:
hasNext()
next(), 重点注意: 这个方法每调用一次, 游标就往下走一个
remove(), 尽量不要与父类的方法混着用
for循环遍历, 1.5以后才出现的for(Objetc o : array) {}
有优点有缺点

(拓展思维)思考一个问题: 任何继承了Iterator接口的都要实现它的方法, ArrayList等实现类也实现了这个接口, 为什么API没有这个方法

Set接口
没有顺序, 但是不可以重复

Comparable接口, Collections类
Collections的常用算法:
sort(List); 顺序排序
如果需要对自定义的类进行排序, 那就必须要让其实现Comparable接口, 实现比较两个类大小的方法
shuffle(List); 随机排列
void reverse(List); 逆序排列(Linked效率较高)
copy(复制完集合,需要复制的原集合); 复制集合, 前提是size()相同(长度, 和容量的区别)
fill(List, Object);使用某个对象填充整个List
binarySearch();(二分搜索法)

自动打包/解包(自动拆箱/装箱)
自动将基础类型转换为对象(装箱) Integer i=5;
自动将对想转换为基础数据类型(拆箱) int h=5; Integer hh=h;

泛型(Generic)(1.5之后才有泛型)
1, 装入集合的类型都被当作Object对待, 从而失去了自己的实际类型
2, 集合中秋出来的时候需要转型, 效率低, 易出错

好处: 增强程序的可读性和稳定性

 

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class Text1 {
    public static void main(String[] args){
/*        List list = new ArrayList();
        list.add("qqq");
        list.add("www");
        list.add("eee");
        list.add("rrr");
        list.add("ttt");
        
        for(int i=0;i<list.size();i++){
            System.out.println(list.get(i));
        }
        for(Object s:list){
            System.out.println(s);
        }

        //Iterator iter = list.iterator();
        while(iter.hasNext()){
            System.out.println(iter.next());
        }
*/
        Map map=new HashMap();
        map.put(1,"qqq");
        map.put(2,"www");
        map.put(3,"eee");
        map.put(4,"rrr");
        map.put(5,"ttt");
        
        Set set=map.keySet();
        
        for(Object o:set){
            System.out.println(map.get(o));
        }
        Iterator iter2 = set.iterator();
        while(iter2.hasNext()) {
            System.out.println(map.get(iter2.next()));
        }
        System.out.println("----------------------------");
        Collection c = map.values();
        Iterator iter3 = c.iterator();
        while(iter3.hasNext()) {
            System.out.println(iter3.next());
        }
    }
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Text2 {

    @SuppressWarnings("unchecked")
    public static void main(String[] args) {
        // TODO Auto-generated method stub
//        List list = new ArrayList();
//        list.add("qqqq");
//        list.add("aaaa");
//        list.add("xxxx");
//        list.add("cccc");
        //System.out.println(list);
        // 顺序排列
        //Collections.sort(list);
        // 随机排列
        //Collections.shuffle(list);
        //逆序排列
        //Collections.reverse(list);
        //System.out.println(list);
        List list2 = new ArrayList();
        for(int i=1;i<=10;i++) {
            list2.add(i);
        }
        int k = (Integer)list2.get(4);
//        Collections.sort(list2);
//        int a = Collections.binarySearch(list2, 8);
//        System.out.println(a);
//        Collections.copy(list2, list);
//        Collections.fill(list2, new Person());
//        System.out.println(list2);
        
        // 拆箱
        Integer a = 5;
        int b = a.intValue();
        // 装箱
        int c = 5;
        Integer i = new Integer(c);
        
        // 自动装箱, 拆箱
        Integer i2 = 8;
        int h = 3;
        Integer hh = h;
        
    }

}

class Person {
    
}

 

以上是关于接口三的主要内容,如果未能解决你的问题,请参考以下文章

日常Geetest滑动验证码(三代canvas版)处理小结(以B站登录验证为例)

Flask 编写http接口api及接口自动化测试

第七周收获

Android 逆向加壳技术简介 ( 动态加载 | 第一代加壳技术 - DEX 整体加固 | 第二代加壳技术 - 函数抽取 | 第三代加壳技术 - VMP / Dex2C | 动态库加壳技术 )

买了小米盒子三代

java中封装,继承,多态,接口学习总结