java学习笔记8

Comparable

Comparable表示可被排序的,实现该接口的类的对象自动拥有排序功能。

对Integer的排序

package com.Factory;
import java.util.*;
public class Test21 {
    public static void main(String[]args)
    {
        List <Integer> list =new  ArrayList();
        for (int i = 0; i <10 ; i++)
        list.add(new Scanner(System.in).nextInt());
    System.out.println("原来的顺序:"+list);
    Collections.sort(list);//对list进行排序
    System.out.println("排序后的顺序:"+list);
    }
}

结果:

原来的顺序:[12, 2424, 435, 63, 643, 75, 986, 25, 73, 757]
排序后的顺序:[12, 25, 63, 73, 75, 435, 643, 757, 986, 2424]

源码:

public interface Comparable<T> {
    public int compareTo(T o);
}

自定义对象同样需要继承Comparable接口,并重写compareTo方法

class Student implements Comparable<Student>{
	int age;
	String name;
	Student(int age,String name){
		this.age = age;
		this.name = name;
	}
	@Override
	public int compareTo(Student o) {
		if(this.age==o.age){
		return this.name.compareTo(o.name);
		}
		return this.age-o.age;
	}
}

上述代码,若学生的年龄不同,则返回年龄差。若年龄相同,则用String重写的compareTo方法比较两个学生的名字,返回0,-1或1,以此来排序。
假如a和b都是实现了Comparable接口的类C的实例,那么只有当a.compareTo(b)的结果与a.equals(b)的结果一致时,才称类C的自然顺序与equals一致。强烈建议将类的自然顺序和equals的结果保持一致,因为如果不一致的话,由该类对象为键的sorted map和由该类对象为元素的sorted set的行为将会变得很怪异。

例如对于一个实现了Comparable接口的元素的有序集合sorted set而言,如果a.equals(b)结果为false,并且a.compareTo(b)==0,则第二个元素的添加操作将会失败,因为在sorted set看来,二者在排序上是一致的,它不报保存重复的元素。

Iterator

Java Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法,可用于迭代 ArrayList 和 HashSet 等集合。
Iterator 是 Java 迭代器最简单的实现

迭代器 it 的三个基本操作是 next 、hasNext 和 remove。

调用 it.next() 会返回迭代器的下一个元素,并且更新迭代器的状态。

调用 it.hasNext() 用于检测集合中是否还有元素。

调用 it.remove() 将迭代器返回的元素删除。

实例:

package com.Factory;

// 引入 ArrayList 和 Iterator 类
import java.util.ArrayList;
import java.util.Iterator;

public class RunoobTest {
    public static void main(String[] args) {

        // 创建集合
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("aaa");
        sites.add("bbb");
        sites.add("ccc");
        sites.add("ddd");

        // 获取迭代器
        Iterator<String> it = sites.iterator();

        // 输出集合中的所有元素
        while(it.hasNext()) {
            System.out.println(it.next());
        }
    }
}

结果:

aaa
bbb
ccc
ddd

删除元素

要删除集合中的元素可以使用 remove() 方法。

以下实例我们删除集合中小于 100 的元素:

package com.Factory;

// 引入 ArrayList 和 Iterator 类
import java.util.ArrayList;
import java.util.Iterator;

public class RunoobTest {
    public static void main(String[] args) {

        // 创建集合
        ArrayList<Integer> sites = new ArrayList();
        sites.add(111);
        sites.add(11);
        sites.add(22);
        sites.add(222);

        // 获取迭代器
        Iterator<Integer> it = sites.iterator();

        // 输出集合中的所有元素
        while(it.hasNext()) {
            if(it.next()<100)
            it.remove();//删小于100的
        }
        System.out.println(sites);
    }
}

结果:

[111, 222]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值