接口三

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 {

}
时间: 2024-10-06 06:56:44

接口三的相关文章

java servlet手机app访问接口(三)高德地图云存储及检索

这篇关于高德地图的随笔内容会多一点, 一.业务说明     对应APP业务中的成员有两类,一是服务人员,二是被服务人员,  主要实现功能, 对APP中的服务人员位置进行时时定位, 然后通过被服务人员登录APP时提供的一个经纬度来计算服务人员与被服务人员之间的距离 单位m. 下面是整个详细流程,从创建高德对应应用(这里注册我就不说了)------最后完成此功能. 二.创建servlet对应的高德地图应用,创建自己的云图数据库表 注册帐号后登录点击右上角的控制台,会出现下面这个界面,我截图 这里当然

使用koa+mongodb构建的仿知乎接口(三)

好了,今天要实现的需求是什么呢?一个社区一般必定会有关注他人.取消关注或者被他人关注的需求.所以,我们就以知乎上的关注.取消关注.正在关注列表.粉丝列表为原型进行开发. 关注和取消关注 继续增加UserSchema中的字段 const UserSchema = new Schema({ ..., following: { type: [{type: Schema.Types.ObjectId, ref: 'User'}], select: false } }) 编写转发的路由 // 关注谁 ro

Java多线程和并发(三),Thread类和Runnable接口

目录 1.Thread和Runnable接口 三.Thread类和Runnable接口 1.Thread和Runnable接口 原文地址:https://www.cnblogs.com/xzmxddx/p/10362804.html

Linux基础(三)——交互接口

一.什么是交互式接口 交互式接口就是系统和用户之间进行交互和信息交换的媒介,它实现信息的内部形式与人类可以接受形式之间的转换.换句话说,即在启动终端后,在终端设备附加一个交互式应用程序,就叫交互式接口.通常指软件接口,一般有命令行接口.图形接口.程序接口三种.命令行接口命令行接口(command line interface,CLI)是计算机操作系统或应用程序为用户提供的可视提示接口,使用CLI,可以在特定的行中输入命令,从操作系统接收回应等.常见的如:shell程序:sh (bourn 史蒂夫

接口、索引器、Foreach的本质(学习笔记)

接口 什么是接口? 接口代表一种能力,和抽象类类似但比抽象类的抽象程度更高! 接口的定义: 1 public interface IEat//定义一个接口 2 { 3 void Eat(string food);//为该接口定义一种能力 4 } 接口的定义 从上边的例子中我们可以看到,接口中的方法是没有方法体的甚至连访问修饰符都没有.而且在接口中只能有方法.属性.索引器及事件! 接口的使用: 1 public class Dog:IEat //Dog类实现IEat接口 2 { 3 //Dog类实

Cloneable接口和Object的clone()方法

http://www.cnblogs.com/xrq730/p/4858937.html 为什么要克隆 为什么要使用克隆,这其实反映的是一个很现实的问题,假如我们有一个对象: public class SimpleObject implements Cloneable { private String str; public SimpleObject() { System.out.println("Enter SimpleObject.constructor()"); } public

Java面向对象-----&gt;接口和抽象类

抽象类和接口(一)在实际的项目中,整个项目的代码一般可以分为结构代码和逻辑的代码.就像建造房屋时,需要首先搭建整个房屋的结构,然后再细化房屋相关的其它的结构,也像制造汽车时,需要首先制作汽车的框架,然后才是安装配件以及美化等工作.程序项目的实现也遵循同样的道理.在项目设计时,一个基本的原则就是--"设计和实现相分离".也就是说结构代码和逻辑代码的分离,就像设计汽车时只需要关注汽车的相关参数,而不必过于关心如何实现这些要求的制作.程序设计时也是首先设计项目的结构,而不用过多的关系每个逻辑

Java基础---IO(三)--IO包中的其他类

第一讲     对象序列化 一.概述 将堆内存中的对象存入硬盘,保留对象中的数据,称之为对象的持久化(或序列化).使用到的两个类:ObjectInputStream和ObjectOutputStream 二.特有方法 ObjectInputStream: Object readObject();//从ObjcetInputStream中读取对象 ObjectOutputStream: void writeObject(Objcet obj);//将指定对象写入ObjcetOutputStream

被动接口在rip,eigrp,ospf中的应用

被动接口的概念是:阻止从该接口发送路由更新.除了BGP之外的所有基于IP路由协议都可以使用被动接口, 一.在RIP中使用被动接口 1.使用被动接口的目的在某些网络环境中,我们不希望将RIP更新发送给某些路由器或者说发送到某个网络中去,我们就可以使用passive-interface这个命令阻止RIP更新广播从指定接口发送到外界,但是这一接口任然可以接受RIP更新 2.passive-interface的原理 应用了passive-interface的接口,也就是被动接口,是不能够发送广播和组播的