java记录

本文详细介绍了Java中的数组及其局限性,然后逐步引入了ArrayList、LinkedList、HashSet和TreeSet等集合类。分别展示了它们的添加、删除、修改和查询操作,以及各自的特点,如ArrayList的动态扩容,LinkedList的首尾操作,HashSet的去重特性,和TreeSet的排序功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数组的缺陷:定长,想要改变异常繁琐——进而演化手撕可变长度的容器。

一数组

public class MyArray {

     private Object [] arr; //声明一个Object类型的数组
     private int size;//表示数组的下标 因为他们是类成员变量 在创建对象时都有默认值。


     public MyArray(){ //无参构造函数
            this(3);  //本类中其他的构造函数 this本类的对象。 如果在构造方法中this()表示调用本类的其他构造函数
     }

     public MyArray(int initSize){ //有参构造函数--表示数组的长度
          if(initSize<0){ //长度不合法
              throw new RuntimeException("sorry 数组的长度有误。");
          }
          arr=new Object[initSize];
     }

     //把元素o放入数组arr
     public void addData(Object o){
           //判断你的数组是否已满
           if(size>=arr.length){
                //扩容--(1)容器的长度变长 (2)把原来容器中的元素复制到新的容器中
               Object[] newArr = Arrays.copyOf(arr, size * 2);
               arr=newArr;
           }
           arr[size]=o;
           size++;
     }

     //根据下标获取数组中的元素。
     public Object getData(int index){
            if(index>=size){
                 throw new ArrayIndexOutOfBoundsException("下标越界");
            }
           Object o = arr[index];
            return o;
     }


}

java官网 基于数组 根据不同的数据结构  创建了多个类  而这些类统称 为集合框架。

ArrayList

 List list = new ArrayList(); //创建一个集合对象 如果没有指定集合容器的长度默认为10

 List list1 = new ArrayList(15); //长度15的集合

 //添加 (1)可以添加任意类型
        list.add("java01");
        list.add("java02");
        list.add(15.5);
        list.add(18);
        list.add(true);
        list.add(new Date());
        System.out.println(list);
        list.add(2,"hello"); //下标为2的位置添加元素 并把后面的元素进行唯一
        System.out.println(list); //打印一个对象时默认调用的为toString()

        List list2=new ArrayList();
        list2.add("a");
        list2.add("b");

        list.addAll(list2);//添加多个元素 把list2中的每个元素一一添加到list中
        System.out.println(list);

 //删除操作
        list.remove(2);//移除下标为2的元素
        System.out.println(list);
        list.clear();//清空集合中的元素.
        System.out.println(list);

  //修改操作
        list.set(1,"刘德华");
        System.out.println(list);

//查询的方法
        Object o = list.get(1);//根据下标获取元素
        System.out.println(o);

        int size = list.size();//获取集合中元素的个数。
        System.out.println(size);

        boolean f = list.contains("java05");//判断元素是否在集合中
        System.out.println(f);

        int index = list.indexOf("java05");//查询元素在集合中第一次出现的位置
        System.out.println(index);

        //遍历集合中的元素 for循环
        for(int i=0;i<list.size();i++){
            Object o1 = list.get(i);
            System.out.println(o1);
        }

三  LinkedList

        LinkedList linkedList=new LinkedList();

        linkedList.add("java01"); //追加尾部
        linkedList.addFirst("java02"); //添加到头部
        linkedList.addLast("java03");//追加到尾部
        linkedList.addFirst("java04"); //追加到头部
        linkedList.addLast("java05");//追加到尾部
        System.out.println(linkedList);

//删除操作
        linkedList.removeFirst();//移除头部元素
        System.out.println(linkedList);

        linkedList.remove(2);//移除指定位置的元素
        System.out.println(linkedList);

        linkedList.removeLast();//移除尾部的元素
        System.out.println(linkedList);

//修改操作
        linkedList.set(1,"java11");
        System.out.println(linkedList);

 //查询操作
        int size = linkedList.size();//求长度
        boolean empty = linkedList.isEmpty();//是否为空

        boolean b = linkedList.contains("java01");//判断元素是否在集合中

        Object o = linkedList.get(1);//根据下标获取指定位置的元素

        Object first = linkedList.getFirst();//获取第一个元素
        System.out.println(first);

        Object last = linkedList.getLast();
        System.out.println(last);

四HashSet集合

// 元素排列无需不重复。

public class Test {
    public static void main(String[] args) {
        HashSet  hashSet= new HashSet();

        HashSet  hashSet1 = new HashSet(16);//初始容器的大小

        //loadFactor:--->0.7f 表示负载因子 当空间使用70%时 要求扩容
        HashSet hashSet2 = new HashSet(16,0.7f);

//添加操作
        hashSet.add("java01");
        hashSet.add("java02");
        hashSet.add("java04");
        hashSet.add("java03");
        hashSet.add("java02");

        HashSet set2=new HashSet();
        set2.add("刘德华");
        set2.add("张学友");
        set2.add("黎明");
        
        hashSet.addAll(set2); //把set2中的每个元素添加到hashset中
        System.out.println(hashSet); //元素不能重复 而且无序。

 //删除
        hashSet.remove("黎明");
//        hashSet.clear();//清空容器集合
        System.out.println(hashSet);

//修改操作
        boolean empty = hashSet.isEmpty(); //判断是否为空
        System.out.println(empty);

        boolean b = hashSet.contains("刘德华");//判断元素是否在容器中
        System.out.println(b);

hashSet的遍历

(1) //遍历--- foreach
        for(Object o: hashSet){
            System.out.println(o);
        }

(2)通过迭代器来遍历

```
 //迭代器遍历
        Iterator iterator = hashSet.iterator();//获取迭代器对象 有序:有下标
        while (iterator.hasNext()){//判断是否指定能够移动
            Object next = iterator.next();//指定移动并获取当前的元素
            System.out.println(next);
        }

    }
}

五 TreeSet集合。

TreeSet treeSet=new TreeSet();
        treeSet.add("java05");
        treeSet.add("java03");
        treeSet.add("java04");
        treeSet.add("java01");
        treeSet.add("java02");
        treeSet.add("java04");

        System.out.println(treeSet);

存储一个对象类型:

public class Test {
    public static void main(String[] args) {
        TreeSet treeSet=new TreeSet();
        treeSet.add(new Student("ropz",17));
        treeSet.add(new Student("s1mp",16));
        treeSet.add(new Student("niko",16));
        treeSet.add(new Student("tiwzz",15));

        System.out.println(treeSet);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值