Java基础---常用集合

1. 什么是集合?

  • 定义:集合是一种容器,用来装数据的,类似于数组。

2. ArrayList<E>集合

ArrayList集合:

  • ArrayList是集合中最常用的一种,集合类似于数组,也是容器,用来装数据的,但集合的大小可变。

注意:

  • <E>是约束数据类型,这里就只有某一类的数据能进入这个集合
  • 不管是什么类型的数据都能装

构造方法

构造方法说明
public ArrayList​()创建一个空的集合对象

常用方法 

常用方法名说明
add(E e)将指定的元素添加到此集合的末尾
add(int index,E element)在此集合中的指定位置插入指定的元素
 get(int index)返回指定索引处的元素
size()返回集合中的元素的个数
remove(int index)删除指定索引处的元素,返回被删除的元素
remove(Object o)删除指定的元素,返回删除是否成功
set(int index,E element)修改指定索引处的元素,返回被修改的元素

ArrayList的遍历方法 

  • 方法一:for遍历和增强for遍历
//增强for循环
for (Object o1 : list) {
    System.out.println(o1);
}


//普通for循环   size()方法获取集合的长度
for(int i=0;i<list.size();i++){
   System.out.println(list.get(i));
}
  • 方法二:迭代器
Iterator it = list.iterator(); //获取迭代器Iterator对象
while(it.hasNext()){ //hasNext() 判断下一个索引位置是否存在元素
    Object next = it.next(); //next() 获取位置位置的元素,并且指针下移
     System.out.println(next);
}

3.  LinkedList<E>集合

定义:底层是一个链表结构,没有所谓的长度。也没有扩容机制。

常用方法 

常用方法名说明
add(E e)将指定的元素添加到此集合的末尾
add(int index,E element)在此集合中的指定位置插入指定的元素
 get(int index)返回指定索引处的元素
remove(int index)删除指定索引处的元素,返回被删除的元素
remove(Object o)删除指定的元素,返回删除是否成功
set(int index,E element)修改指定索引处的元素,返回被修改的元素

 ArrayList和LinkedList的区别 

  • ArrayList是基于动态数组的数据结构。LinkedList是基于双向链表的数据结构。
  • 对于随机访问(get(int index),set(int index,Obj ele)),ArrayList的效率更高。因为有索引的存在,对于LinkedList比较慢,因为要移动指针。
  • 对于新增和删除来说,LinkedList的效率更好,因为ArrayList的新增和删除需要移动索引位置,而LinkedList由于双向链表的特性不需要进行任何移动。
  • 对于首尾的操作,LinkedList速度更快,因为LinkedList中记录了首尾(first,last)的元素
  • 在Java中之所以动态数组比双向链表快,因为动态数组底层使用while遍历查找,双向链表使用迭代器遍历查找。 区分的关键点是RandomAccess接口,此接口为空接口,作用就是用于标记。

4. HashSet

  • 底层使用hash散列进行存储。
  • HashSet添加数据的时候对于插入顺序是无序的,本身又是有序的。但是不具备排序功能。
  • HashSet中数据不重复。
  • HashSet中允许存储null。
  • 一般用于多次执行但是只存储一份记录的数据(比如说打卡记录)  。

常用方法 

方法名说明
add(E e)添加将指定的元素
remove(Object o)删除指定的元素
 public static void main(String[] args) {
        HashSet<String> set = new HashSet<>();
        set.add("张三");
        set.add("李四");
        set.add("张三");
        set.add(null);
        
        set.remove("张三"); //删除 只能根据元素删除
        
        for (String s : set) {
            System.out.println(s);
        }
    }

5. TreeSet

  • 底层使用tree(树结构)结构进行存储。并且本身具备了排序功能。
  • 插入的数据不允许重复。不允许为null。

常用方法

方法名说明
add(E e)添加将指定的元素
remove(Object o)删除指定的元素

 

### PyCharm 打开文件显示全的解决方案 当遇到PyCharm打开文件显示全的情况时,可以尝试以下几种方法来解决问题。 #### 方法一:清理缓存并重启IDE 有时IDE内部缓存可能导致文件加载异常。通过清除缓存再启动程序能够有效改善此状况。具体操作路径为`File -> Invalidate Caches / Restart...`,之后按照提示完成相应动作即可[^1]。 #### 方法二:调整编辑器字体设置 如果是因为字体原因造成的内容显示问题,则可以通过修改编辑区内的文字样式来进行修复。进入`Settings/Preferences | Editor | Font`选项卡内更改合适的字号大小以及启用抗锯齿功能等参数配置[^2]。 #### 方法三:检查项目结构配置 对于某些特定场景下的源码视图缺失现象,可能是由于当前工作空间未能正确识别全部模块所引起。此时应该核查Project Structure的Content Roots设定项是否涵盖了整个工程根目录;必要时可手动添加遗漏部分,并保存变更生效[^3]。 ```python # 示例代码用于展示如何获取当前项目的根路径,在实际应用中可根据需求调用该函数辅助排查问题 import os def get_project_root(): current_file = os.path.abspath(__file__) project_dir = os.path.dirname(current_file) while not os.path.exists(os.path.join(project_dir, '.idea')): parent_dir = os.path.dirname(project_dir) if parent_dir == project_dir: break project_dir = parent_dir return project_dir print(f"Current Project Root Directory is {get_project_root()}") ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值