Java:Collection集合和Iterator迭代器(10)

 Student类:

package demo21Collection集合;
/*
重写排序规则,需要重写Compareable接口,重写cpmpareTo方法
 */
public class Student implements Comparable<Student>{
    private String name;
    private int 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 Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    //重写排序规则
    @Override
    public int compareTo(Student o) {
        //自定义比较规则,比较两个人的年龄(this,参数Student)
        //自己(this)-参数:代表升序
        return this.getAge()-o.getAge();//this调用方法的那个人,年龄升序排序
    }
}

Collections工具类的方法:

package demo21Collection集合;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

/*
java.util.Collections集合工具类,用来对集合进行操作,部分方法如下:
 -public static <T> boolean addAll(Collection<T> c, T..elements):往集合中添加一些元素
 -public static void shuffle(List<?> list>):打乱顺序
 -public static <T> void sort(List<T> list):将集合中的元素按照默认规则排序 只能传list集合

 -sort(List<T> list):要想按照默认的排序规则,必须需要重写Compareable接口,重写cpmpareTo方法
   自己(this)-参数:代表升序
 -public static <T> void sort(List<T> list,Compatator<? super T>)
 Comparator的排序规则:
  o1-o2:升序
 */
public class Collections工具类的方法 {
    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<>();
        //往集合中添加多个元素
        list.add("a");
        list.add("b");
        list.add("c");
        //如果存放的元素很多,我们就可以通过集合工具类addAll()往集合中一次性添加多个元素
        //-public static <T> boolean addAll(Collection<T> c, T..elements):往集合中添加一些元素
        Collections.addAll(list,"d","e","f","g","h");
        System.out.println(list);
        // -public static void shuffle(List<?> list>):打乱顺序
        Collections.shuffle(list);
        System.out.println(list);//[g, a, e, h, d, f, b, c],每次执行不一样
        System.out.println("====================");

        ArrayList<Integer> list01=new ArrayList<>();
        list01.add(1);
        list01.add(3);
        list01.add(2);
        System.out.println(list01);
       // -public static <T> void sort(List<T> list):将集合中的元素按照默认规则排序 只能传list集合  默认是升序
        Collections.sort(list01);//[1, 3, 2]
        System.out.println(list01);//[1, 2, 3]

        ArrayList<String> list02=new ArrayList<>();
        list02.add("a");
        list02.add("c");
        list02.add("b");
        System.out.println(list02);//[a, c, b]
        Collections.sort(list02);
        System.out.println(list02);//[a, b, c]

        //sort参数是自定义类型,必须重写方法compleTo
        ArrayList<Student> list03=new ArrayList<>();
        list03.add(new Student("张三",18));
        list03.add(new Student("李四",20));
        list03.add(new Student("王五",15));
        System.out.println(list03);//[Student{name='张三', age=18}, Student{name='李四', age=20}, Student{name='王五', age=15}]
        Collections.sort(list03);
        System.out.println(list03);//[Student{name='王五', age=15}, Student{name='张三', age=18}, Student{name='李四', age=20}]

        System.out.println("====================");
        ArrayList<Integer> list04=new ArrayList<>();
        list04.add(1);
        list04.add(3);
        list04.add(2);
        System.out.println(list04);
        Collections.sort(list04, new Comparator<Integer>() {//Comparator接口,传递接口的匿名内部类
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1-o2;//升序排序
            }
        });
        System.out.println(list04);

    }
}

 Test01类:

package demo21Collection集合;

import java.util.ArrayList;
import java.util.Collection;

/*
java.util.Collection接口所有单列集合的最顶层接口,定义了所有单列集合共性方法
任意的单列集合都可以使用Collecton接口中的方法

共性方法:
boolean add(E e) 向集合中添加元素
boolean remove(E e) 删除集合中的某个元素
void clear() 清空集合所有的元素
boolean contains(E e) 判断集合是否包含某个元素
boolean isEmpty() 判断集合是否为空,有没有内容
int size() 获取集合的长度
Object[] toArray() 将集合转成一个数组
 */
public class Test01 {
    public static void main(String[] args) {
        //创建集合对象
        Collection<String> coll=new ArrayList<>();
        System.out.println(coll);//[] 重写了toString方法
        //boolean add(E e) 向集合中添加元素
        coll.add("hello");
        coll.add("world");
        coll.add("heima");
        coll.add("java");
        System.out.println(coll);//[hello, world, heima, java]
       // boolean remove(E e) 删除集合中的某个元素
        boolean result=coll.remove("hello");
        System.out.println(result);//true
        System.out.println(coll);//[world, heima, java]
        //void clear() 清空集合所有的元素
       // coll.clear();
       // System.out.println(coll);//[]

        //boolean contains(E e) 判断集合是否包含某个元素
        boolean result1=coll.contains("java");
        System.out.println(result1);//true

        //boolean isEmpty() 判断集合是否为空
        System.out.println(coll.isEmpty());//false

        //int size() 获取集合的长度
        System.out.println(coll.size());//3

        //Object[] toArray() 将集合转成一个数组
        Object[] arr=coll.toArray();
        for (int i=0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
    }
}

 DemoIterator类:

package demo22Iterator迭代器;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/*
public E next() 返回迭代的下一个元素
public bollean hasNext()  如果有元素可以迭代,返回true

Itrrator迭代器,是一个接口,我们无法直接使用,需要使用Iterator接口的实现类对象,获取实现类的方式比较特殊
Collection接口中有一个方法,叫iterator(),这个方法返回的就是迭代器的实现类对象
  Iterator<E> iterator() 返回在collection的元素上进行迭代的迭代器

 使用步骤:
 1.使用集合中的方法iterator方法iterator() 获取迭代器的实现类对象,使用Iterator接口接收(多态)
 2.使用Iterator接口中的方法hasNest()方法,判断有没有下一个元素
 3.使用Iterator接口中的方法next()方法,取出集合中的写一个元素
 */
public class DemoIterator {
    public static void main(String[] args) {
        //创建一个集合对象
        Collection<String> coll=new ArrayList<>();
        //往集合中添加元素
        coll.add("姚明");
        coll.add("科比");
        coll.add("麦迪");
        coll.add("詹姆斯");

        /*
        1.使用集合中的方法iterator方法iterator() 获取迭代器的实现类对象,使用Iterator接口接收(多态)
             Iterator<E> 接口也是有泛型的,迭代器的泛型看集合是什么泛型,迭代器就是什么泛型
         */
        //多态 (接口)       实现类
        Iterator<String> it=coll.iterator();
        // 2.使用Iterator接口中的方法hasNest()方法,判断有没有下一个元素
        Boolean b=it.hasNext();
        System.out.println(b);
        //3.使用Iterator接口中的方法next()方法,取出集合中的写一个元素
        String s=it.next();//true
        System.out.println(s);//姚明
        s=it.next();//true
        System.out.println(s);//科比
        //往下去当没有元素,在.next取元素会报异常

        /*
        当不知道集合有多少元素,使用while循环 结束条件:hasNext方法返回false
         */
        System.out.println("================");
        while(it.hasNext()){
            String e=it.next();
            System.out.println(e);
        }
        System.out.println("-------------------------");
        //for循环迭代
        for (Iterator<String> it2=coll.iterator();it2.hasNext();){//hasNext判断是否有下一个元素,即查看有没有有元素,又会把指针下移一位
            String e=it2.next();
            System.out.println(e);
        }
    }
}

Foreach类:

package demo22Iterator迭代器;

import java.util.ArrayList;

/*
增强for循环也称for each循环是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的,它的内部原理是一个迭代器,
所以在遍历的过程中,不能对集合中的元素进行增删操作

JDK1.5之后出现的新特性,Collectioo<E>extends Iterable<E>:所有的单列集合都可以使用增强for
public interface Iterable<T>实现这个接口允许对象成为foreach语句目标
增强for循环:用来遍历集合和数组
格式:
for(集合/数组的数据类型 变量名:集合名/数组名){

}
 */
public class Foreach {
    public static void main(String[] args) {
        //demo();
        demo01();
    }
    //增强for循环遍历集合
    private static void demo01(){
        ArrayList<String> list=new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        for (String s:list){
            System.out.println(s);
        }

    }
    //增强for循环遍历数组
    private static void demo(){
        int[] arr={1,2,3,4,5};
        for (int i:arr){
            System.out.println(i);
        }
    }
}

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵俺第一专栏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值