java基础之ArrayLis类

目录

1:ArrayList类概述

2:解释

3:ArrayList案例

存储字符串并遍历

存储自定义对象并遍历

去除集合中字符串的重复值(字符串的内容是否相同)


1:ArrayList类概述

底层数据结构是数组,查询快,增删慢 线程不安全,效率高

2:解释

由于ArrayLis类继承List而List继承Collection接口所以ArrayLis实现了他们的方法

3:ArrayList案例

存储字符串并遍历

package day25;

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

public class Test1 {
    public static void main(String[] args) {
        ArrayList a = new ArrayList();//创建ArrayLis对象
        //添加元素
        a.add("hello");
        a.add("world");
        a.add("java");
        a.add("hadoop");
        //利用迭代器遍历集合
        Iterator iterator = a.iterator();
        while(iterator.hasNext()){
            Object next = iterator.next();
            System.out.println(next);
        }

    }
}

存储自定义对象并遍历

package day25;

public class Student {
    private  int age;
    private  String name;

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Student() {
    }

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

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

public class Test4 {
    public static void main(String[] args) {
        ArrayList a = new ArrayList();//创建ArrayList对象
        //创建三个学生对象
        Student s1 = new Student(18, "小华");
        Student s2 = new Student(19, "小亮");
        Student s3 = new Student(20, "小明");
        //将xuesh对象加入到集合中
        a.add(s1);
        a.add(s2);
        a.add(s3);
        //迭代器获取集合中每个元素
        Iterator iterator = a.iterator();
        while(iterator.hasNext()){
            Object next = iterator.next();
            Student s=(Student) next;//向下转型
            System.out.println(s.getName()+"**"+s.getAge());//输出学生姓名和年龄
        }


    }
}

去除集合中字符串的重复值(字符串的内容是否相同)

第一种:定义一个新数组来存储contains判断

package day25;

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

public class Test5 {
    public static void main(String[] args) {
        ArrayList a = new ArrayList();//创建ArrayLis对象
        ArrayList b = new ArrayList();
        //添加元素
        a.add("hello");
        a.add("world");
        a.add("java");
        a.add("hadoop");
        a.add("hello");
        a.add("world");
        a.add("java");
        a.add("abc");
       //迭代器获取集合a中元素
        Iterator iterator = a.iterator();
        while(iterator.hasNext()){
            Object next = iterator.next();
            //判断b中是否有相同的元素,没有就添加到b中
            if(!b.contains(next)){
                b.add(next);
            }
        }
        //迭代器获取b中元素
        Iterator iterator1 = b.iterator();
        while(iterator1.hasNext()){
            Object next = iterator1.next();
            System.out.println(next);
        }
    }
}

第二种:双重循环利用选择排序与后面的数比较若是有重复就remove

package day25;

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

public class Test6 {
    public static void main(String[] args) {
        ArrayList a = new ArrayList();//创建ArrayLis对象
        //添加元素
        a.add("hello");
        a.add("world");
        a.add("java");
        a.add("hadoop");
        a.add("hello");
        a.add("world");
        a.add("java");
        a.add("abc");
        //利用选择排序查找重复的元素
        for(int i=0;i<a.size();i++){
            for(int j=i+1;j<a.size()-1;j++){
                //判断要是有重复就删除,然后前移一个
                if(a.get(i).equals(a.get(j))){
                    a.remove(j);
                    --j;
                    }
            }
        }
        //迭代器变量a集合
        Iterator iterator = a.iterator();
        while(iterator.hasNext()){
            Object next = iterator.next();
            System.out.println(next);
        }

    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值