首页 > 编程语言 >Java--集合

Java--集合

时间:2024-08-16 16:16:00浏览次数:7  
标签:Java -- arraylist 元素 sites add 集合 ArrayList

目录

集合框架类结构图

List接口

ArrayList(语法格式)

方法 描述
add() 将元素插入到指定位置的 arraylist 中
addAll() 添加集合中的所有元素到 arraylist 中
clear() 删除 arraylist 中的所有元素
clone() 复制一份 arraylist
contains() 判断元素是否在 arraylist
get() 通过索引值获取 arraylist 中的元素
indexOf() 返回 arraylist 中元素的索引值
removeAll() 删除存在于指定集合中的 arraylist 里的所有元素
remove() 删除 arraylist 里的单个元素
size() 返回 arraylist 里元素数量
isEmpty() 判断 arraylist 是否为空
subList() 截取部分 arraylist 的元素
set() 替换 arraylist 中指定索引的元素
sort() 对 arraylist 元素进行排序
toArray() 将 arraylist 转换为数组
toString() 将 arraylist 转换为字符串
ensureCapacity() 设置指定容量大小的 arraylist
lastIndexOf() 返回指定元素在 arraylist 中最后一次出现的位置
retainAll() 保留 arraylist 中在指定集合中也存在的那些元素
containsAll() 查看 arraylist 是否包含指定集合中的所有元素
trimToSize() 将 arraylist 中的容量调整为数组中的元素个数
removeRange() 删除 arraylist 中指定索引之间存在的元素
replaceAll() 将给定的操作内容替换掉数组中每一个元素
removeIf() 删除所有满足特定条件的 arraylist 元素
forEach() 遍历 arraylist 中每一个元素并执行特定操作
import java.util.ArrayList; // 引入 ArrayList 类

ArrayList<E> objectName =new ArrayList<>();  // 初始化

添加元素到ArrayList中

import java.util.ArrayList;
import java.util.Collections;
public class RunTest {
    public static void main(String[] args) {
        //添加元素到ArrayList中使用add()方法
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("curry");
        sites.add("durant");
        sites.add("rose");
        System.out.println(sites);
        sites.set(1,"Kobe");//修改第二个元素为kobe
        System.out.println(sites.get(1));//访问集合中第二个元素,get(index)数组中的索引从0开始
        sites.remove(1);//删除第二个元素
        System.out.println(sites.size());
        Collections.sort(sites);//排序方法使用Collections.sort()方法
        //for-each迭代元素
          for(String i : sites){
            System.out.println(i);
        }
        //for循环迭代数组中的元素
        for (int i = 0;i<sites.size();i++){
            System.out.println(sites.get(i));
        }
    }
}

访问ArrayList中元素使用get()方法

修改ArrayList元素使用set()方法

删除ArrayList元素使用remove()方法

计算ArrayList元素使用size()方法

for循环for-each循环迭代元素

特点,底层数据结构,常用方法该类也是实现了List的接口,实现了可变大小的数组,随机访问和遍历元素时,提供更好的性能。该类也是非同步的,在多线程的情况下不要使用。ArrayList 增长当前长度的50%,插入删除效率低。

LinkedList

该类实现了List接口,允许有null(空)元素。主要用于创建链表数据结构,该类没有同步方法,如果多个线程同时访问一个List,则必须自己实现访问同步,解决方法就是在创建List时候构造一个同步的List。例如:

List list=Collections.synchronizedList(newLinkedList(...));

LinkedList 查找效率低。

Vector

该类和ArrayList非常相似,但是该类是同步的,可以用在多线程的情况,该类允许设置默认的增长长度,默认扩容方式为原来的2倍。

Stack

栈是Vector的一个子类,它实现了一个标准的后进先出的栈。

Set接口

HashSet基于 HashMap 来实现的,是一个不允许有重复元素的集合。

HashSet 允许有 null 值。

HashSet 是无序的,即不会记录插入的顺序。

HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的。 您必须在多线程访问时显式同步对 HashSet 的并发访问。HashSet 实现了 Set 接口。

添加add(),删除remove(),计算集合中元素个数size(),迭代与ArrayList方法一样此外将介绍几种特有方法

删除集合中所有元素可以使用 clear 方法 使用 contains() 方法来判断元素是否存在于集合当中

示例如下:

import java.util.HashSet;
public class HashSetTest {
    public static void main(String[] args) {
        HashSet<String> sites = new HashSet<String>();
        sites.add("Google");
        sites.add("RunOb");
        sites.add("TaoBao");
        sites.add("ZhiHu");
        System.out.println(sites.contains("TaoBao"));
        sites.add("RunOb");// 重复的元素不会被添加
        System.out.println(sites.size());
        //for-each遍历
        for(String i :sites){
            System.out.println(i);
        }
        // 删除元素,删除成功返回 true,否则为 false
        sites.remove("TaoBao");
        //删除集合中所有元素
        sites.clear();
        System.out.println(sites);
    }
}

Queue接口

非阻塞队列

LinkedList

ArrayDeque

PriorityQueue

ConcurrentLinkedQueue

阻塞队列

ArrayBlockingQueue(掌握)

LinkedBlockingQueue

PriorityBlockingQueue

DelayQueue

SynchronousQueue

LinkedTransferQueue

LinkedBlockingDeque

Map接口

HashMap(掌握)

是一个散列表,它存储的内容是键值对(key-value)映射。
该类实现了Map接口,根据键的HashCode值存储数据,具有很快的访问速度,最多允许一条记录的键为null,不支持线程同步。

TreeMap(掌握) 继承了AbstractMap,并且使用一颗树。

LinkedHashMap 继承于HashMap,使用元素的自然顺序对元素进行排序

ConcurrentHashMap

IdentifyHashMap 继承AbstractMap类,比较文档时使用引用相等。

HashTable(过时)j 是Dictionary(字典) 类的子类,位于 java.util 包中

遍历Map

// 使用 entrySet 遍历  
for (Map.Entry<String, Integer> entry : map.entrySet()) {  
    System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());  
}  
  
// 使用 keySet 和 values 遍历  
for (String key : map.keySet()) {  
    System.out.println("Key = " + key);  
}  
  
for (Integer value : map.values()) {  
    System.out.println("Value = " + value);  
}  
  
// Java 8 引入的 forEach 方法  
map.forEach((key, value) -> System.out.println("Key = " + key + ", Value = " + value));

集合中元素排序

集合泛型

集合遍历

for循环

for each循环

iterator迭代器 该方法可以不用担心在遍历的过程中会超出集合的长度。

import java.util.*;
 
public class Test{
 public static void main(String[] args) {
     List<String> list=new ArrayList<String>();
     list.add("Hello");
     list.add("World");
     list.add("HAHAHAHA");
     //第一种遍历方法使用 For-Each 遍历 List
     for (String str : list) {            //也可以改写 for(int i=0;i<list.size();i++) 这种形式
        System.out.println(str);
     }
 
     //第二种遍历,把链表变为数组相关的内容进行遍历
     String[] strArray=new String[list.size()];
     list.toArray(strArray);
     for(int i=0;i<strArray.length;i++) //这里也可以改写为  for(String str:strArray) 这种形式
     {
        System.out.println(strArray[i]);
     }
     
    //第三种遍历 使用迭代器进行相关遍历
     
     Iterator<String> ite=list.iterator();
     while(ite.hasNext())//判断下一个元素之后有值
     {
         System.out.println(ite.next());
     }
 }
}

Stream流处理

集合工具类

Properties类

Collections类

Arrays类

标签:Java,--,arraylist,元素,sites,add,集合,ArrayList
From: https://www.cnblogs.com/yangcurry/p/18363088

相关文章

  • Balanced String
    这道题目真的不知道怎么总结了,这技巧太新了见这篇题解为什么最开始要引入这个子问题呢?实际上,我们假设我们已经得到了最终的交换后的答案,设为\(t\),\(s\)就是题目给的原串,从\(s\)到\(t\)的最小交换次数当然就是从\(t\)到\(s\)的最小交换次数,于是考虑从\(t\)到\(s\)的最小交换次数,......
  • 策略模式
    publicclassT{publicstaticvoidmain(String[]args){TravleContextcontext=newTravleContext(newCar());context.selectTravle();}}/*环境类Conext**/classTravleContext{privateITravleStategyiTravleStategy;pu......
  • openform环境搭建-编译
    参考文档OpenFOAM安装1基于docker安装ubuntu:22.04环境和基础工具OpenFOAM11支持以下版本的Ubuntu操作系统:20.04LTS(长期支持版本),代号为focal。22.04LTS,代号为jammy。23.04,代号为lunar,支持直到2024年5月。24.04LTS,代号为noble,从2024年6月开始支持。当前基于ubuntu:2......
  • 电动打气泵pcba方案设计与开发
    电动打气泵方案基于简单原理,使用时能自动检测轮胎压力。当胎压低于预设值时,电机自动启动,将压缩气体经进气管泵入轮胎。一旦电动打气泵达到设定的胎压上限,电机将自动关闭。该方案由压力传感器、ADC芯片、主控芯片等核心组件构成。其关键功能参数如下:显示方式:采用LED/LCD显......
  • 20240326 windows搭建k8s环境
    windows搭建k8s环境安装docker-desktop在界面中找到/设置/Resources/Advanced/Diskimagelocation,选择一个非C盘的目录利用minikube安装已经安装玩docker-desktop或者virtualbox参考文档minikube官方文档https://www.cnblogs.com/yumingkuan/p/16750618.htmlhttps://......
  • JAVA 解析html 类型字符串(使用jsoup)
    1.引入pom文件<dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.17.2</version></dependency>2.使用在线解析html工具,自己先看清html内容 (在线推荐:https://coding.tools/cn/html-beautifier#googl......
  • 算法模板
    拓扑排序点击查看代码publicBooleanbfsOptimize(intn,int[][]edges){//初始化入度数组,每个节点有两个元素,第一个元素表示入度,第二个元素暂时未使用int[][]indegrees=newint[n][2];//初始化邻接表,用于存储图的连接关系List<List<Integer>>adj......
  • 20240110 windows安装make工具
    从https://sourceforge.net/projects/mingw/下载文件并安装安装后打开MinGW,依次选择如下3个红框的包,右键“Markforinstallation”勾选需要安装的包后,执行“installation/ApplyChanges”将c:\MinGW\bin\ming32-make.exe重命名为c:\MinGW\bin\make.exe将MinGW的......
  • Soap协议
    简单对象访问协议(Soap)1、它使用XML格式来传输消息。2、SOAP与HTTP的区别SOAP可以传递结构化的请求数据,而HTTP只能传递纯文本的请求数据SOAP是简单对象的访问协议,HTTP是标准超文本传输协议SOAP需要对XML数据进行解析,而HTTP大多以JSON为主SOAP协议的优势1、......
  • 韩顺平linux——centos安装
    centos安装选redhat红帽,centos是红帽的分支。 开发工具包含gccjdkmysql。 软件选择,默认最小安装,很多功能如gcc不带,学习过程需要一个桌面。磁盘分区boot分区1G设备类型:标准分区 文件类型ext4swap分区1G 设备类型:标准分区 文件类型swaproot分区17G 设备类......