Java集合的Collection接口和List接口详解

 更新时间:2022年03月08日 15:03:36   作者:海文宇  
这篇文章主要为大家详细介绍了Java集合的Collection接口和List接口,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

1集合的概念

  • 把集合看做是一个容器,集合不是一个类,是一套集合框架,框架体系包含很多的集合类,java api提供了
  • 集合存储任意类型(基本包装类型,引用类型)
  • 集合对元素的增删查改操作起来非常方便的,专门提供很多方便操作的方法
  • 开发中经常集合来操作数据的,开发地位比较高的,考虑对数据的操作效率上的问题

2 集合的父类Collection接口

2.1常用方法

  • boolean add(E e) 添加某个元素
  • addAll(元素) 添加一个集合
  • remove(object) 删除一个元素
  • removeAll(collection) 删除一个集合
  • c.clear(); //移除所有
  • isEmpty() 判断是否为空
    public static void main(String[] args) {
        //创建集合
        Collection c = new ArrayList();
        //添加
        c.add("张三");
        c.add(10);
        c.add(false);
        c.add('a');
        System.out.println(c);
//        addAll(元素) 添加一个集合
        Collection c2 = new ArrayList();
        c2.add("hello");
        c2.add("world");
        c2.add("java");
        c.addAll(c2);
        System.out.println(c);
        //删除
        System.out.println("删除张三元素是否成功:" + c.remove("张三2"));
        System.out.println(c);
        c.removeAll(c2);
        System.out.println("移除c2集合:" + c);
        //清空和判断是否为空
//        c.clear(); //移除所有
//        System.out.println(c); //[]
        System.out.println(c.isEmpty()); //判断集合中的元素是否为空,为空返回true,否则false
        System.out.println(c.contains("张三222")); //是否包含某个指定的元素,是返回true,否则false
        System.out.println("获取集合中的元素个数:" + c.size()); //leng属性
    }

2.2遍历 

  • 使用foreach 遍历
  • 使用迭代器遍历
  • 使用toArray()方法转成数组,再遍历.
  • 使用for遍历
    public static void main(String[] args) {
        Collection c = new ArrayList();
        c.add("张三");
        c.add("李四");
        c.add("王五");
        System.out.println(c);
        //foreach遍历方式
        System.out.println("-------------1");
        for(Object obj : c){
            System.out.println(obj);
        }
        //iterator方法,方式二
        System.out.println("-------------2");
        Iterator it = c.iterator();
        while(it.hasNext()){
            Object obj = it.next();
            System.out.println(obj);
        }
        System.out.println("-------------3");
        //方式三,toArray
        Object[] objs = c.toArray();
        for(Object o : objs){
            System.out.println(o);
        }
        System.out.println("-------------4");
        //方式四
        for(Iterator iterator  = c.iterator();iterator.hasNext();){
            Object obj = iterator.next();
            System.out.println(obj);
        }
        System.out.println("-------------5");
        for(Iterator iterator = c.iterator();iterator.hasNext(); System.out.println(iterator.next())){}

    }

3 List接口

List接口继承了Collection接口,所以Collection接口的方法List都可以使用.

3.1List接口常用方法

添加

  • boolean add(E e) 添加一个元素
  • void add(int index, E element) 添加某个元素到指定位置

boolean addAll(Collection<? extends E> c) 添加一个集合

  • boolean-addAll(int index, Collection<? extends E> c) 添加一个集合到指定位置

删除

  • E remove(int index) 删除指定位置的元素
  • boolean remove(Object o) 删除某个元素
  • boolean removeAll(Collection<?> c) 删除一个集合

修改

  • E set(int index, E element)

获取

  • E get(int index)
  • int size()
  • 其他
  • int indexOf(Object o)
  • int lastIndexOf(Object o)
  • List subList(int fromIndex, int toIndex)

3.2遍历

  • E get(int index) + int size()
  • ListIterator listIterator()
  • ListIterator listIterator(int index)

员工类:

package listdemo;
import java.util.Objects;
public class Employee {
    //员工属性, id name age salary
    private Integer id;
    private String name;
    private Integer age;
    private Double salary;
    public Employee() {
    }
    public Employee(Integer id, String name, Integer age, Double salary) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.salary = salary;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public Double getSalary() {
        return salary;
    }
    public void setSalary(Double salary) {
        this.salary = salary;
    }
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Employee employee = (Employee) o;
        return Objects.equals(id, employee.id) &&
                Objects.equals(name, employee.name) &&
                Objects.equals(age, employee.age) &&
                Objects.equals(salary, employee.salary);
    }
    @Override
    public int hashCode() {
        return Objects.hash(id, name, age, salary);
    }
    @Override
    public String toString() {
        return "Employee{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", salary=" + salary +
                '}';
    }
}
public static void main(String[] args) {
        //创建一个list集合
        List list = new ArrayList();
        //添加的方法
        list.add("hello");
        list.add("java");
        list.add(1,"world"); //添加到指定的位置的元素,添加到第二个位置
        list.add("html");
        System.out.println(list);
        List list2 = new ArrayList();
        list2.add("test1");
        list2.add("test2");
        list2.add("test3");
//        list.addAll(list2); //添加一个集合
//        System.out.println(list);
        list.addAll(2,list2); //添加一个新集合到第一个老集合中指定的位置,下标为2
        System.out.println(list);
        //删除
        // *      boolean remove(Object o)
        System.out.println(list.remove("java"));
        System.out.println(list);
        // *      E remove(int index)
        Object obj = list.remove(1);
        System.out.println(obj); //world
        System.out.println(list);
        // *       boolean removeAll(Collection<?> c)
        list.removeAll(list2);
        System.out.println("删除新集合之后:" + list);
        //修改
        // *       E set(int index, E element)
        Object o = list.set(1, "编程语言");
        System.out.println(o);
        System.out.println("修改之后:" + list);
        // 其他
        // *       int indexOf(Object o) 从前面往后某个元素的位置
        // *       int lastIndexOf(Object o) 从后面往前面找某个元素的位置
        // *        List<E> subList(int fromIndex, int toIndex)
        List list3 = new ArrayList();
        list3.add("张三");
        list3.add("李四");
        list3.add("王五");
        list3.add("赵六");
        list3.add("小编");
        int i = list3.indexOf("李四2222");
        System.out.println("李四的位置:" + i);
        System.out.println("找王五的下标位置:" + list3.lastIndexOf("王五"));
        System.out.println(list3);
        List newsList = list3.subList(1, 4); //从老集合中截取1-3的位置的元素,并返回一个新的集合
        System.out.println(newsList); //1,2的位置的元素,3不包括,
    }

List的遍历

  • E get(int index) + int size()
  • ListIterator listIterator()
  • ListIterator listIterator(int index)
  • iterator();
  • toArray();
  • foreach
  • toString
  • for()
package listdemo;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
/**
 * 
 * 遍历
 *  *       E get(int index) + int size()
 *  *      ListIterator<E> listIterator()
 *  *      ListIterator<E> listIterator(int index)
 *          iterator();
 *          toArray();
 *          foreach
 *          toString
 *          for()
 *          for()
 *
 */
public class ListDemo02 {
    public static void main(String[] args) {
        //E get(int index) + int size()
        List list = new ArrayList();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        ListIterator listIterator1 = list.listIterator(1);
        if (listIterator1.hasNext()){
            System.out.println("从第一个元素开始取出:" +listIterator1.next());
        }
        if (listIterator1.hasNext()){
            System.out.println("继续取下一个元素:" +listIterator1.next());
        }

        //size获取集合中元素的个数
        System.out.println(list.size());
        //get(索引)获取指定索引的元素
//        Object o = list.get(0);
//        System.out.println(o); //张三
//        o = list.get(1);
//        System.out.println(o); //李四
//        o = list.get(2);
//        System.out.println(o); //王五
        //以上出现重复,使用循环解决,结合size+get方法
        for (int i = 0; i < list.size(); i++) {
            Object o1 = list.get(i);
            System.out.println(o1);
        }
        List list2 = new ArrayList();
        list2.add("hello");
        list2.add("world");
        list2.add("java");
        ListIterator listIterator = list2.listIterator();//列表迭代器方法,返回迭代器对象
        //正向遍历
        while (listIterator.hasNext()) { //判断集合中是否有可取的下一个元素,如果有
            Object o = listIterator.next(); //取出第一个元素
            System.out.println(o);
        }
        System.out.println("------------------------");
        //逆序遍历,在使用hasPrevious(),previous(),先正序遍历才可以使用这个
        while(listIterator.hasPrevious()){
            Object obj = listIterator.previous();
            System.out.println(obj);
        }
    }
}

4 集合中元素的去重

package listdemo;
import java.util.ArrayList;
import java.util.List;
/**
 * 去除集合中重复的元素
 */
public class ListDemo03 {
    public static void main(String[] args) {
        List list = new ArrayList();
        list.add(new Employee(101,"张三",20,2000.0));
        list.add(new Employee(102,"李四",30,3000.0));
        list.add(new Employee(103,"王五",20,2000.0));
        list.add(new Employee(103,"王五",20,2000.0));
        //创建一个新的集合
		List newList = new ArrayList();
        for(Object obj : list){
            if (!newList.contains(obj)){
                newList.add(obj);
            }
        }
        list = newList; //把新集合的数据赋值给到老集合
        //遍历老集合
       for(Object obj : list){
           System.out.println(obj);
        }
        //第二种去除重复的方式
        //冒泡,选择,比较equlas
        //根据选择排序的思想,从第一个元素依次和后面的每一个元素
        for (int i = 0; i < list.size(); i++) {
            for (int j = i+1; j < list.size(); j++) {
                //进行比较,如果第一个元素和第二个元素是相等
                //把第二个元素删除
                if (list.get(i).equals(list.get(j))){
                    list.remove(j);
                    j--;
                }
            }
        }
        for(Object obj : list){
            System.out.println(obj);
        }
    }
}

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!  

相关文章

  • Spring Boot集成Swagger2项目实战

    Spring Boot集成Swagger2项目实战

    在日常的工作中,我们往往需要给前端(WEB端、IOS、Android)或者第三方提供接口,这个时候我们就需要给他们提供一份详细的API说明文档。这篇文章我们就来分享一种API文档维护的方式,即通过Swagger来自动生成Restuful API文档
    2018-01-01
  • 使用SpringBoot动态切换数据源的实现方式

    使用SpringBoot动态切换数据源的实现方式

    在我们企业项目开发的过程中,有的时候,一个项目需要在运行时,根据某种条件选择使用哪个数据源,那么此时该怎么进行动态切换呢,本文给大家例举一种常见的实现方式,文中有详细的实现步骤,需要的朋友可以参考下
    2023-12-12
  • 老生常谈 Java中的继承(必看)

    老生常谈 Java中的继承(必看)

    下面小编就为大家带来一篇老生常谈 Java中的继承(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • 解决lombok 父类和子类builder不兼容的问题

    解决lombok 父类和子类builder不兼容的问题

    这篇文章主要介绍了解决lombok 父类和子类builder不兼容的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • Intellij Idea插件开发之创建项目层级的右键菜单

    Intellij Idea插件开发之创建项目层级的右键菜单

    这篇文章主要介绍了Intellij Idea插件开发之创建项目层级的右键菜单,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • Spring下Filter过滤器配置全局异常处理的详细步骤

    Spring下Filter过滤器配置全局异常处理的详细步骤

    这篇文章主要介绍了Spring下Filter过滤器配置全局异常处理的详细步骤,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Spring中属性注入的几种方式以及复杂属性的注入详解

    Spring中属性注入的几种方式以及复杂属性的注入详解

    这篇文章主要介绍了Spring中属性注入的几种方式以及复杂属性的注入详解,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • 浅谈Strut2如何对请求参数的封装

    浅谈Strut2如何对请求参数的封装

    这篇文章主要介绍了浅谈Strut2如何对请求参数的封装,具有一定借鉴价值,需要的朋友可以参考下
    2017-12-12
  • Java中token的存储和获取实例代码

    Java中token的存储和获取实例代码

    关于java获取微信Token验证的问题相信很多人都遇见过,尤其是对刚接触微信开发的人来说确实有点棘手,下面这篇文章主要给大家介绍了关于Java中token存储和获取的相关资料,需要的朋友可以参考下
    2022-08-08
  • Java日期时间操作的方法

    Java日期时间操作的方法

    这篇文章主要为大家详细介绍了Java日期时间操作的一些方法,获得Calendar,定义日期/时间的格式等,感兴趣的小伙伴们可以参考一下
    2016-08-08

最新评论