JAVASE入门九脚-集合框架ArrayList,LinkedList,HashSet,TreeSet,迭代

java 复制代码
public class LinklistDemo {
    public static void main(String[] args) {
        LinkedList linkedList=new LinkedList();
        linkedList.add(1);
        linkedList.add("ssss");
        linkedList.add(false);
        System.out.println(linkedList);
        System.out.println( linkedList.getFirst());
        linkedList.add(0,"10086");
        System.out.println(linkedList);
        linkedList.remove(0);
        System.out.println(linkedList);
        linkedList.set(1,"10086");//gai
        System.out.println(linkedList);

        System.out.println(linkedList.get(1));

    }

1、Vector也是List接口的一个子类实现

2、Vector跟ArrayList一样,底层都是使用数组进行实现的

3、面试经常问区别:

(1)ArrayList是线程不安全的,效率高,Vector是线程安全的效棒

(2)ArrayList在进行扩容的时候,是扩容1.5倍,Vector扩容的时候扩容原来的2倍

java 复制代码
package ContainerDemo1;

import java.util.Vector;

public class VatorDemo {
    public static void main(String[] args) {
        Vector vector = new Vector();
        vector.add(111);
        vector.add("大王");
        vector.add(false);
        System.out.println(vector);
    }
}

所有的集合类都默认实现了Iterable的接口,实现此接口意味着具备了增强for循环的能力

增强for循环本质上使用的也是iterator的功能

方法:
iterator
foreach

在iterator的方法中,要求返回一个Iterator的接口实例对象

此接口中包含了

hasNext
next

在使用iterator进行迭代的过程中如果删除其中的某个元素会报错,并发操作异常,因此
如果遍历的同时需要修改元素,建议使用listIterator(),
ListIterator迭代器提供了向前和向后两种遍历的方式

始终是通过cursor和lastret的指针来获取元素值及向下的过遍历索引

当使用向前遍历的时候必须要保证指针在选代器的结果,否则无法获取结果

java 复制代码
public class IteratorDemo {
    public static void main(String[] args) {
        ArrayList list=new ArrayList();
        list.add(55);
        list.add("xiao");
        list.add(true);
        System.out.println(list);
     for(int i=0;i<list.size();i++){
         System.out.println(list.get(i));
     }
//     Iterator iterator=list.iterator();
//     while(iterator.hasNext()){
//         System.out.println(iterator.next());
//     }

for (Object i: list){
//         System.out.println(i);
//        }
java 复制代码
ListIterator listIterator = list.listIterator();
     while(listIterator.hasNext()){
         Object next = listIterator.next();
         if(next.equals(1)){
            list.remove(next);
         }
         System.out.println(list);
     }
while (listIterator.hasPrevious()){
    System.out.println(listIterator.previous());
}
java 复制代码
package ContainerDemo1;

import java.util.Objects;

public class Dog {
   private String name;
    private String color;
    public Dog(){

    }
    public Dog(String name,String color){
        this.name=name;
        this.color=color;
    }
   public void setName(String name){
       this.name=name;
   }
   public String getName(){
       return name;
   }
   public void setColor(String color)
   { this.color=color;}
    public String getColor(){
       return color;
    }


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

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Dog dog = (Dog) o;
        return Objects.equals(name, dog.name) && Objects.equals(color, dog.color);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, color);
    }
}





package ContainerDemo1;

import java.util.ArrayList;
import java.util.List;

public class ListTest {
    public static void main(String[] args) {
        List list=new ArrayList();
        Dog d1=new Dog("大黄","red");
        Dog d2=new Dog("大白","blue");
        Dog d3=new Dog("大黑","green");
        list.add(d1);
        list.add(d2);
        list.add(d3);
        System.out.println(list);
        System.out.println(list.size());
        list.remove(d1);
        System.out.println(list);
        System.out.println(list.contains(d2));
        Dog d4=new Dog("小明","block");
        System.out.println(list.contains(d4));

    }
}

1、set中存放的是无序,唯一的数据

2、set不可以通过下标获取对应位置的元素的值,因为无序的特点

java 复制代码
package ContainerDemo1;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;

public class SetDemo {

    public static void main(String[] args) {
        Set set = new HashSet();
        set.add("233");
        set.add(false);
        set.add(4);
        System.out.println(set);
        Iterator iterator = set.iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }
        System.out.println("--------");
//        for(Iterator iter=set.iterator() : iter.hasNext()){
//
//        }

        TreeSet treeSet=new TreeSet();
        treeSet.add(55);
        treeSet.add(14);
        treeSet.add(59);
        System.out.println(treeSet);
    }
}
相关推荐
naruto_lnq25 分钟前
分布式系统安全通信
开发语言·c++·算法
Jasmine_llq1 小时前
《P3157 [CQOI2011] 动态逆序对》
算法·cdq 分治·动态问题静态化+双向偏序统计·树状数组(高效统计元素大小关系·排序算法(预处理偏序和时间戳)·前缀和(合并单个贡献为总逆序对·动态问题静态化
qq_297574671 小时前
【实战教程】SpringBoot 实现多文件批量下载并打包为 ZIP 压缩包
java·spring boot·后端
老毛肚1 小时前
MyBatis插件原理及Spring集成
java·spring·mybatis
学嵌入式的小杨同学1 小时前
【Linux 封神之路】信号编程全解析:从信号基础到 MP3 播放器实战(含核心 API 与避坑指南)
java·linux·c语言·开发语言·vscode·vim·ux
lang201509281 小时前
JSR-340 :高性能Web开发新标准
java·前端·servlet
Re.不晚1 小时前
Java入门17——异常
java·开发语言
爱吃rabbit的mq1 小时前
第09章:随机森林:集成学习的威力
算法·随机森林·集成学习
缘空如是1 小时前
基础工具包之JSON 工厂类
java·json·json切换
精彩极了吧1 小时前
C语言基本语法-自定义类型:结构体&联合体&枚举
c语言·开发语言·枚举·结构体·内存对齐·位段·联合