首页 > 编程语言 >Java集合(一)

Java集合(一)

时间:2024-05-30 22:28:39浏览次数:23  
标签:Java 元素 list System println add 集合 out

集合

概念:集合是Java API所提供的一系列类,可以用于动态存放多个对象。集合只能存对象集合与数组的不同在于,集合是大小可变的序列,而且元素类型可以不受限定,只要是引用类型。(集合中不能放基本数据类型,但可以放基本数据类型的包装类),集合类全部支持泛型,是一种数据安全的用法。

集合的继承关系

在这里插入图片描述

Collection

Collection接口的常用方法(其实现子类都可以使用)

方法名作用
int size()返回此collection中的元素数。
boolean isEmpty()判断此collection中是否包含元素。
boolean contains(Object obj)判断此collection是否包含指定的元素。
boolean contains(Collection c)判断此collection是否包含指定collection中的所有元素。
boolean add(Object element)向此collection中添加元素。
boolean addAll(Collection c)将指定collection中的所有元素添加到此collection中
boolean remove(Object element)从此collection中移除指定的元素。
boolean removeAll(Collection c)移除此collection中那些也包含在指定collection中的所有元素。
void clear()移除些collection中所有的元素。
boolean retainAll(Collection c)仅保留此collection中那些也包含在指定collection的元素。
Iterator iterator()返回在此collection的元素上进行迭代的迭代器。
Object[] toArray()把此collection转成数组。

List接口

List接口是Java集合框架中的一个接口,继承自Collection接口。List接口用于表示一个有序、可重复的集合,可以通过索引(位置)来访问和修改其中的元素。List接口的常用实现类包括ArrayList、LinkedList和Vector等。

相对于Collection接口新增的方法

方法名功能
public Object get(int index)根据下标,返回列表中的元素
public Object add(int index, Object element)在列表的指定位置插入指定元素.将当前处于该位置的元素(如果有的话)和所有后续元素向右移动
public Object set(int index, Object element)用指定元素替换列表中指定位置的元素
public Object remove(int index)移除列表中指定位置的元素

List接口实现类

  • ArrayList
    ​ 数据结构:一维数组
    ​ 特点:存储数据
  • LinkedList
    ​ 数据结构:双向列表
    ​ 特点:队列模式、栈模式
  • Vector
    ​ 数据结构:一维数组
    ​ 特点:线程安全
  • Stack
    ​ 继承关系:class Stack extends Vector,底层为栈
    ​ 特点:栈模式
ArrayList

代码实现:

public class Test02 {
	public static void main(String[] args) {
		ArrayList<String> list = new ArrayList<>();
		//添加数据
		list.add("吴彦祖");
		list.add("谢霆锋");
		list.add("刘宪华");
		list.add("彭于晏");
		list.add("周杰伦");
		//设置指定下标上的元素
		list.set(1, "王力宏");
		//获取指定下标上的元素
		String str = list.get(1);
		System.out.println("获取指定下标上的元素:" + str);//王力宏
		//获取元素个数
		int size = list.size();
		System.out.println("获取元素个数:" + size);//5
		//在指定下标上添加元素
		list.add(2, "薛之谦");
		ArrayList<String> newList1 = new ArrayList<>();
		Collections.addAll(newList1, "aaa","bbb","ccc","ccc");//利用集合工具类(Collections)批量添加元素
		list.addAll(newList1);//将newList1中所有的元素都添加到list集合里末尾的位置
		ArrayList<String> newList2 = new ArrayList<>();
		Collections.addAll(newList2, "xxx","xxx","yyy","yyy","zzz","zzz");//利用集合工具类(Collections)批量添加元素
		list.addAll(3, newList2);//将newList2中所有的元素都添加到list集合里指定下标的位置
		//清空集合里所有的元素
		//list.clear();
		System.out.println("判断集合中是否包含指定元素:" + list.contains("王力宏"));//true
		System.out.println("判断集合中是否包含指定集合:" + list.containsAll(newList1));//true
		System.out.println("获取元素在集合中第一次出现的下标:" + list.indexOf("ccc"));//12
		System.out.println("获取元素在集合中最后一次出现的下标:" + list.lastIndexOf("ccc"));//13
		
		//没有-true,有-false
		System.out.println("判断集合里是否没有元素:" + list.isEmpty());//false
		list.remove(9);//通过下标删除元素
		list.remove("刘宪华");//通过数据删除元素
		list.removeAll(newList1);//将list中有newList1的元素全部删除(去除交集)
		list.retainAll(newList2);//将list中有newList2的元素全部保留(保留交集)
		List<String> subList = list.subList(1, 4);//从开始下标处(包含)截取到结束下标处(排他)的元素,返回新的集合
		//将集合转换为数组
		Object[] array1 = subList.toArray();
		System.out.println(Arrays.toString(array1));//[xxx, yyy, yyy]
		
		//将集合转换为指定类型的数组
		String[] array2 = new String[3];
		subList.toArray(array2);
		System.out.println(Arrays.toString(array2));//[xxx, yyy, yyy]
		System.out.println("-----------------------------------------");
		//遍历集合 -- for循环
		for (int i = 0; i < list.size(); i++) {
			System.out.println(list.get(i));
		}
		System.out.println("-----------------------------------------");
		//遍历集合 -- foreach
		for (String element : list) {
			System.out.println(element);
		}
		System.out.println("-----------------------------------------");
		//遍历集合 -- Iterator
		Iterator<String> it = list.iterator();
		while(it.hasNext()){//判断是否有可迭代的元素
			String next = it.next();//获取下一个元素
			System.out.println(next);
		}
		System.out.println("-----------------------------------------");
		//遍历集合 -- ListIterator
		ListIterator<String> listIterator = list.listIterator();
		while(listIterator.hasNext()){//判断是否有可迭代的元素
			String next = listIterator.next();//获取下一个元素
			System.out.println(next);
		}
	}
}
LinkedList

特有方法:

方法功能
void addFirst(E e)将指定元素插入到次列表的开头
void addLast(E e)将指定元素添加到此列表的结尾
E getFirst()返回此列表的第一个元素
E getLast()返回此列表的最后一个元素
E removeFirst()移除并返回此列表的第一个元素
E removeLast()移除并返回此列表的最后一个元素
E pop()从此列表所表示的堆栈处弹出一个元素
void push(E e)将元素推入此列表所表示的堆栈

独有方法的代码实现:

public class Test02 {
	public static void main(String[] args) {
		LinkedList<String> list = new LinkedList<>();
		list.add("王力宏");
		list.add("薛之谦");
		list.add("周杰伦");
		list.add("abc");
		list.add("abc");
		list.add("AAA");
		list.add("abc");
		list.add("abc");
		//添加到头部
		list.addFirst("aaa");
		list.offerFirst("bbb");
		list.push("ccc");
		//添加到末尾
		list.addLast("xxx");
		list.offer("yyy");
		list.offerLast("zzz");
		System.out.println("获取第一个元素:" + list.element());
		System.out.println("获取第一个元素:" + list.getFirst());
		System.out.println("获取第一个元素:" + list.peek());
		System.out.println("获取第一个元素:" + list.peekFirst());
		System.out.println("获取第一个元素:" + list.pop());
		System.out.println("获取最后一个元素:" + list.getLast());
		System.out.println("获取最后一个元素:" + list.peekLast());
		//删除第一个元素
		list.poll();
		list.pollFirst();
		list.removeFirst();
		//删除最后一个元素
		list.pollLast();
		list.removeLast();
		//删除第一次出现的元素
		list.removeFirstOccurrence("abc");
		//删除最后一次出现的元素
		list.removeLastOccurrence("abc");
		//倒序遍历
//		Iterator<String> descendingIterator = list.descendingIterator();
//		while(descendingIterator.hasNext()){
//			String next = descendingIterator.next();
//			System.out.println(next);
//		}
		
		for (String element : list) {
			System.out.println(element);
		}
	}
}
LinkedList实现队列模式
public class Test03 {
	public static void main(String[] args) {
		LinkedList<String> list = new LinkedList<>();
		list.add("aaa");
		list.add("bbb");
		list.add("ccc");
		list.add("ddd");
		list.add("eee");
		while(!list.isEmpty()){
			//String element = list.pollFirst();
			String element = list.removeFirst();
			System.out.println(element);
		}
		System.out.println("集合的元素个数为:" + list.size());//0
	}
}
LinkedList实现栈模式
public class Test04 {
	public static void main(String[] args) {
		LinkedList<String> list = new LinkedList<>();
		list.add("aaa");
		list.add("bbb");
		list.add("ccc");
		list.add("ddd");
		list.add("eee");
		while(!list.isEmpty()){
			String element = list.removeLast();
			System.out.println(element);
		}
		System.out.println("集合的元素个数为:" + list.size());//0
	}
}
Vector

vector的使用同ArrayList一致,不再赘述,这里只阐述一下Vector的以往实现方式

public class Test02 {
	/**
	 * 知识点:Vector老的方法
	 * 理解:Vector属于元老级别的集合类(JDK1.0),JDK1.2开始才有集合框架的概念,
	 * 		为了将Vector保留下来,Java的设计者让Vector多实现了List接口
	 */
	public static void main(String[] args) {
		Vector<String> v = new Vector<>();
		v.addElement("aaa");
		v.addElement("bbb");
		v.addElement("ccc");
		v.addElement("ddd");
		v.addElement("eee");
		v.removeElementAt(0);//根据下标删除元素
		v.removeElement("bbb");//根据数据删除元素
		Enumeration<String> elements = v.elements();
		while(elements.hasMoreElements()){
			String nextElement = elements.nextElement();
			System.out.println(nextElement);
		}
	}
}
Stack

代码实现:

public class Test01 {
	/**
	 * 继承关系:class Stack extends Vector
	 * 特点:栈模式	
	 */
	public static void main(String[] args) {
		Stack<String> stack = new Stack<>();
		//将元素添加到栈顶
		stack.push("aaa");
		stack.push("bbb");
		stack.push("ccc");
		stack.push("ddd");
		stack.push("eee");
		System.out.println("获取栈顶元素:" + stack.peek());
		System.out.println("获取元素到栈顶的距离:" + stack.search("bbb"));//4 - 从1开始数
		//判断集合是否为空内容
		while(!stack.empty()){
			//删除栈顶元素,并返回
			String pop = stack.pop();
			System.out.println(pop);
		}	
	}
}

标签:Java,元素,list,System,println,add,集合,out
From: https://blog.csdn.net/weixin_47705682/article/details/139336165

相关文章

  • Java函数式编程
    Java函数式编程Java8引入了对函数式编程的支持。Java8中引入的主要特性1.Lambda表达式和函数式接口:Lambda表达式允许以更简洁的方式表达一个方法的实现。函数式接口,只定义了一个抽象方法的接口(使用@FunctionalInterface注解来标记此类接口),与Lambda表达式一起使用,以便可......
  • java集合框架
    java集合框架前言:本节我们来学习java集合框架1.0什么是集合集合便是对象的容器,定义了多个对象进行操作的常用方法集合和数组的区别:1数组长度固定,集合长度不固定2数组可以存储基本类型和引用类型,集合只能存储引用类型。我们在使用集合时,需要导入java.utill的所有内容1.1......
  • Java 异常处理
    超详细:Java异常处理和最佳实践(含案例分析)https://mp.weixin.qq.com/s/7MbgphfBDBHWLx9nx5lHqA1.异常处理https://blog.csdn.net/lanuage/article/details/94303169 https://www.cnblogs.com/panshenlian/p/14095564.htmlhttps://www.cnblogs.com/fulfill/p/16046859.html......
  • 简单网页爬虫(java)
    一、绪论 1.功能通过用户输入的一个网址,该程序可以不重复地打印出这个网址中涉及到的一系列其他网址信息2.预备知识1.java的基础语法2.java文本IO及异常处理二、代码实现1.代码思路创建两个数组,一个数组存取已经访问过的网址,一个数组存取准备访问地网址,大概的思想和BF......
  • JavaScript实现跳转的方法
    在JavaScript中,实现页面跳转(即导航到另一个网页)有多种方法。以下是一些常见的方法及其示例代码:1.使用 window.location.href通过设置 window.location.href 属性,可以跳转到新的URL。javascriptwindow.location.href="https://www.example.com";2.使用 window.open......
  • Java容器集合
    简单示意图详细示意图ArrayList和LinkedList区别ArrayList(默认size为10)是实现了基于动态数组的数据结构,LinkedList基于双向链表的数据结构。对于随机访问get和set,ArrayList效率优于LinkedList,因为LinkedList要移动指针。对于新增和删除操作add和remo......
  • java单元测试:spring测试模块
    Spring测试模块为开发者提供了一套强大的工具,用于在Spring应用中进行单元测试、集成测试和端到端测试。1.测试框架集成Spring测试模块与多个测试框架集成,最常用的是JUnit5和TestNG。JUnit5集成使用@ExtendWith(SpringExtension.class)注解来启用Spring测......
  • 推荐一个小而全的 Java 工具类库,再也不用重复造轮子,简直太优雅(带私活源码)
    上周接到老大的需求说让整理下工具类,新项目要用,本想直接拿以前的改改直接用的,结果发现以前的工具类存在很多问题,光加解密工具类就重复写了很多个。赶紧跑去找有经验的同事商量对策,最终在Github上找到Hutool这款神器。简介Hutool是一个小而全的Java工具类库,通过静态......
  • Java--hashmap如何根据value排序
    java中map根据value排序在Java中,Map是一种非常常用的数据结构,它通过键值对的形式存储数据,Map本身是无序的,但是在实际应用中,我们有时需要根据Map的值来进行排序,本文将介绍如何使用Java中的Map来实现根据Value排序。Map转TreeMap在Java中,可以使用TreeMap来根据HashMap的值......
  • JavaWeb笔记整理+图解——Filter过滤器
    欢迎大家来到这一篇章——Filter过滤器监听器和过滤器都是JavaWeb服务器三大组件(Servlet、监听器、过滤器)之一,他们对于Web开发起到了不可缺少的作用。ps:想要补充Java知识的同学们可以移步我已经完结的JavaSE笔记,里面整理了大量详细的知识点和图解,可以帮你快速掌握Java编程的......