信息发布→ 登录 注册 退出

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

发布时间:2026-01-11

点击量:
目录
  • 1集合的概念
  • 2 集合的父类Collection接口
    • 2.1常用方法
    • 2.2遍历 
  • 3 List接口
    • 3.1List接口常用方法
    • 3.2遍历
  • 4 集合中元素的去重
    • 总结

      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);
              }
          }
      }
      

      总结

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

      在线客服
      服务热线

      服务热线

      4008888355

      微信咨询
      二维码
      返回顶部
      ×二维码

      截屏,微信识别二维码

      打开微信

      微信号已复制,请打开微信添加咨询详情!