Java可重复单列集合

2024-04-15 00:36
文章标签 java 重复 集合 单列

本文主要是介绍Java可重复单列集合,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Collection集合

Java Collection 是 java.util包中的一个接口,它用于将多个对象表示为单个单元。

Collection接口在Java中扮演着非常重要的角色,它提供了一种方式来存储和操作一组对象。以下是一些关于Java Collection的重要信息:

  1. 接口定义:Collection接口定义了一组方法,这些方法允许对集合进行增加、删除、查找和遍历等操作。
  2. 主要子接口:Collection接口有几个主要的子接口,包括List、Set和Queue,它们分别代表有序列表、无序集合和队列。
  3. 基本操作:Collection接口提供的基本操作包括add()(添加元素)、remove()(移除元素)、clear()(清除集合)、size()(获取集合大小)和contains()(检查集合是否包含特定元素)等。
  4. 与Map的区别:虽然Map接口也是Java集合框架的一部分,但它不是Collection接口的子接口。Map是双列集合的顶级接口,用来存储键值对,而Collection则是单列集合的顶级接口。
  5. 与数组的区别:数组和集合都是用于存储数据的容器,但数组是一系列有序数据的集合,而集合提供了更多的操作和方法来处理数据。
  6. 使用场景:在Java开发中,使用集合是非常常见的任务。无论是需要存储一组对象还是需要对这些对象进行排序、搜索或其他操作,集合都是一个强大的工具。

Collection集合常用方法  

方法名说明
boolean add(E e)添加元素
boolean remove(Object o)从集合中移除指定的元素
boolean removeIf(Object o)根据条件进行移除
void clear()清空集合中的元素
boolean contains(Object o)判断集合中是否存在指定的元素
boolean isEmpty()判断集合是否为空
int size()集合的长度,也就是集合中元素的个数

Collection集合的遍历 

Java Collection集合的遍历有以下几种方式:

  • 使用迭代器(Iterator)进行遍历:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;public class Main {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("apple");list.add("banana");list.add("orange");Iterator<String> iterator = list.iterator();while (iterator.hasNext()) {String fruit = iterator.next();System.out.println(fruit);}}
}
  • 使用增强for循环进行遍历:
import java.util.ArrayList;
import java.util.List;public class Main {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("apple");list.add("banana");list.add("orange");for (String fruit : list) {System.out.println(fruit);}}
}
  • 使用Java 8的Stream API进行遍历:
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;public class Main {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("apple");list.add("banana");list.add("orange");list.stream().forEach(System.out::println);}
}

 List集合

List是Java中的一种数据结构,它是一个有序且允许重复元素的集合

List接口在Java的集合框架中扮演着重要的角色。它继承自Collection接口,并提供了对元素进行插入、删除、修改和查询等操作的方法。List的特点包括:

  • 有序性:List中的每个元素都有一个索引,可以通过索引来访问或操作元素。第一个元素的索引是0,第二个是1,以此类推。
  • 可重复性:与Set不同,List允许存储重复的元素。
  • 常用实现类:List接口有多种实现类,如ArrayList和LinkedList。ArrayList是基于动态数组实现的,适合随机访问元素;而LinkedList则是基于链表实现的,适合频繁的插入和删除操作。
  • 常用方法:List接口提供了添加(add)、删除(remove)、获取(get)、设置(set)、遍历等方法,这些方法使得List成为一个非常灵活和强大的数据结构。
方法名描述
void add(int index,E element)在此集合中的指定位置插入指定的元素
E remove(int index)删除指定索引处的元素,返回被删除的元素
E set(int index,E element)修改指定索引处的元素,返回被修改的元素
E get(int index)返回指定索引处的元素

代码实现:

import java.util.ArrayList;
import java.util.List;public class Main {public static void main(String[] args) {// 创建一个List对象List<String> list = new ArrayList<>();// 添加元素到List中list.add("apple");list.add("banana");list.add("orange");// 获取List的大小int size = list.size();System.out.println("List的大小为:" + size);// 遍历List并输出元素for (String fruit : list) {System.out.println(fruit);}// 删除List中的某个元素list.remove(1);System.out.println("删除索引为1的元素后,List的内容为:" + list);// 修改List中的某个元素list.set(0, "grape");System.out.println("将索引为0的元素修改为'grape'后,List的内容为:" + list);}
}

 List集合的遍历

  • 使用迭代器(Iterator)进行遍历:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;public class Main {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("apple");list.add("banana");list.add("orange");Iterator<String> iterator = list.iterator();while (iterator.hasNext()) {String fruit = iterator.next();System.out.println(fruit);}}
}
  • 使用增强for循环进行遍历:
import java.util.ArrayList;
import java.util.List;public class Main {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("apple");list.add("banana");list.add("orange");for (String fruit : list) {System.out.println(fruit);}}
}
  • 使用Java 8的Stream API进行遍历:
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;public class Main {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("apple");list.add("banana");list.add("orange");list.stream().forEach(System.out::println);}
}
  • 使用普通for循环遍历
import java.util.ArrayList;
import java.util.List;public class Main {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("apple");list.add("banana");list.add("orange");for (int i = 0; i < list.size(); i++) {String fruit = list.get(i);System.out.println(fruit);}}
}
  • 使用列表迭代器遍历
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;public class Main {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("apple");list.add("banana");list.add("orange");ListIterator<String> iterator = list.listIterator();while (iterator.hasNext()) {String fruit = iterator.next();System.out.println(fruit);}}
}

ArrayList

Java ArrayList是Java集合框架(Java Collection Framework)中的一个重要组件,它提供了对列表(List)数据结构的实现。以下是有关Java ArrayList的一些关键信息:

类定义ArrayList 是一个可调整大小的数组实现,它允许我们动态地添加和删除元素。

性能特点

  • ArrayList 提供了快速的随机访问能力,因为它是基于索引的数据结构。
  • 在列表的中间插入或删除元素时,可能需要移动大量元素,因此这些操作可能比在列表末尾添加或删除元素的开销要大。

常用操作

  • add(E e): 在列表的末尾添加一个元素。
  • add(int index, E element): 在列表的指定位置插入一个元素。
  • remove(int index): 移除列表中指定位置的元素,并返回该元素。
  • get(int index): 返回列表中指定位置的元素。
  • size(): 返回列表中的元素数量。
  • isEmpty(): 检查列表是否为空。
  • clear(): 移除列表中的所有元素。
  • indexOf(Object o): 返回此列表中首次出现的指定元素的索引,或如果列表不包含元素,则返回 -1。
  • lastIndexOf(Object o): 返回此列表中最后出现的指定元素的索引,或如果列表不包含元素,则返回 -1。
  • contains(Object o): 如果列表包含指定的元素,则返回 true,否则返回 false。

初始化

  • 可以通过无参构造函数创建一个空的ArrayList:ArrayList<String> list = new ArrayList<>();
  • 也可以通过传入一个初始容量来创建ArrayList:ArrayList<String> list = new ArrayList<>(initialCapacity);
  • 还可以将另一个集合作为参数传递给ArrayList的构造函数来初始化它:ArrayList<String> list = new ArrayList<>(anotherCollection);

泛型ArrayList 可以存储任何类型的对象,包括基本类型包装类、字符串、自定义对象等。

线程安全ArrayList 不是线程安全的,如果在多线程环境中需要使用,可以考虑使用Vector或者Collections.synchronizedList()来包装ArrayList

应用场景:当需要频繁访问列表中的元素时,ArrayList 是一个很好的选择,特别是读操作远多于写操作的情况。

示例代码

import java.util.ArrayList;
import java.util.List;public class Main {public static void main(String[] args) {List<String> animals = new ArrayList<>();animals.add("Cat");animals.add("Dog");animals.add("Horse");System.out.println("Animals in the list: " + animals);String firstAnimal = animals.get(0);System.out.println("First animal: " + firstAnimal);animals.remove(1);System.out.println("After removing an animal: " + animals);animals.set(0, "Fish");System.out.println("After replacing an animal: " + animals);System.out.println("Is the list empty? " + animals.isEmpty());System.out.println("Size of the list: " + animals.size());System.out.println("Index of 'Horse': " + animals.indexOf("Horse"));System.out.println("Last index of 'Horse': " + animals.lastIndexOf("Horse"));System.out.println("Does the list contain 'Dog'? " + animals.contains("Dog"));animals.clear();System.out.println("List after clearing: " + animals);}
}

以上代码展示了如何使用ArrayList的基本操作,包括添加、获取、删除、替换、检查是否为空、获取大小、查找索引以及清空列表。

LinkedList

Java LinkedList 是 Java 集合框架中的一种数据结构,它实现了 List 接口。LinkedList 是一个双向链表,可以高效地进行元素的插入和删除操作。

以下是一些常用的 LinkedList 方法:

  1. add(E e): 在列表末尾添加一个元素。
  2. add(int index, E element): 在指定位置插入一个元素。
  3. remove(int index): 移除列表中指定位置的元素。
  4. get(int index): 返回列表中指定位置的元素。
  5. size(): 返回列表中的元素数量。
  6. isEmpty(): 检查列表是否为空。
  7. clear(): 移除列表中的所有元素。
  8. indexOf(Object o): 返回列表中首次出现的指定元素的索引,或如果列表不包含元素,则返回 -1。
  9. lastIndexOf(Object o): 返回列表中最后出现的指定元素的索引,或如果列表不包含元素,则返回 -1。
  10. contains(Object o): 如果列表包含指定的元素,则返回 true,否则返回 false。

以下是一个简单的示例,演示如何使用 LinkedList:

import java.util.LinkedList;public class Main {public static void main(String[] args) {LinkedList<String> list = new LinkedList<>();// 添加元素list.add("Apple");list.add("Banana");list.add("Cherry");// 获取元素String firstElement = list.get(0);System.out.println("第一个元素: " + firstElement);// 删除元素list.remove(1);// 遍历列表for (String item : list) {System.out.println(item);}}
}

这篇关于Java可重复单列集合的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/904449

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

poj2406(连续重复子串)

题意:判断串s是不是str^n,求str的最大长度。 解题思路:kmp可解,后缀数组的倍增算法超时。next[i]表示在第i位匹配失败后,自动跳转到next[i],所以1到next[n]这个串 等于 n-next[n]+1到n这个串。 代码如下; #include<iostream>#include<algorithm>#include<stdio.h>#include<math.