ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java List

2021-08-04 21:00:56  阅读:118  来源: 互联网

标签:Java arrayList List System add println ArrayList out


目录

ArrayList

含义

容量可以变化的数组

体系结构

  • Collection
    • List
      • ArrayList

常用方法

add     //向集合添加元素
isEmpty //判断是否为空
size    //元素个数
remove  //删除
toArray //转成数组
contains//是否包含
get     //获取
set     //更新
.....

注意点

  • 集合存放的是元素的引用【TODO 自行验证】
  • add 和 addAll的区别
    • add是当做一个整体元素
    • addAdd是把参数的每一个元素当做一个单独元素插入

迭代器示意图

1627443245039

案例

public class ArrayListDemo {
	
	//数组
	    //含义:大小固定的容器
	
	//集合
	    //学习内容:
	        //Collection 具体子类
	        //Map        具体子类
	
	    //含义:
	        //大小可以变化的容器
	        //是对数据结构的实现
	             
	    //体系结构
	         //Collection
	             //List
	                 //ArrayList
	                 //LinkedList
	                 //Vector
	                     //Stack
	
	    //方法
	       //add     //向集合添加元素
	       //isEmpty //判断是否为空
	       //size    //元素个数
	       //remove  //删除
	       //toArray //转成数组
	       //contains//是否包含
	       //get     //获取
	       //set     //更新
	       //.....
	
	
	//ArrayList
	    //体系结构
	         //Collection
	             //List
	                 //ArrayList
	    //本质
	         //会扩容的数组
	 
	public static void main(String[] args) {
		
		List arrayList = new ArrayList();
		
		//联系常用方法
		
		//末尾插入
		arrayList.add(1);
		arrayList.add(2);
		
		//指定位置插入
		arrayList.add(0, 3); 
		
		//根据位置获取元素
		System.out.println(arrayList.get(0));
		
		//根据下标删除
		arrayList.remove(0);
		
		//根据元素删除
		Integer element = 2;
		arrayList.remove(element);
		
		//大小
		System.out.println(arrayList.size());
		
		//是否为空
		System.out.println(arrayList.isEmpty());
		
		//判断是否包含
		System.out.println(arrayList.contains(1));
		
		//清空
		arrayList.clear();
		
		arrayList.add(1);
		
		//更新
		arrayList.set(0, 2);
		
		arrayList.add("zhangsan");
		
		arrayList.add("zhangsan");
		
		
		System.out.println(arrayList.indexOf("zhangsan"));
		System.out.println(arrayList.lastIndexOf("zhangsan"));
		
		Object [] array = arrayList.toArray();
		System.out.println(Arrays.toString(array));
		
		System.out.println(arrayList);
		 
		//遍历
		System.out.println("--------方式一--------");
		int size = arrayList.size();
		for(int i=0;i<size;i++){
			System.out.println(arrayList.get(i));
		}
		
		
		System.out.println("--------方式二--------");
		Iterator iterator = arrayList.iterator();
		
		while(iterator.hasNext()){
			System.out.println(iterator.next()); 
		}
		
		System.out.println("--------方式三--------");
		//增强for
		//语法
		   //for(元素类型 名称:集合){
			  //syso(名称);    
		   //}
		//本质:
		    //迭代器
		 
		for(Object temp:arrayList){
			System.out.println(temp);
		}
		
		
		//集合存储的是元素的引用
		List userList = new ArrayList();
		
		User user = new User();
		user.setName("laowang");
		
		userList.add(user);
		
		user.setName("laoli");
		
		System.out.println(userList);
		
		
		//add addAll的区别
		List oneList = new ArrayList();
		oneList.add(1);
		oneList.add(2);
		
		List twoList = new ArrayList();
		twoList.add(3);
		twoList.add(4);
		
		//oneList.add(twoList);
		//System.out.println(oneList);  // [1,2,[3,4]]  
		
	 
		oneList.addAll(twoList);
		System.out.println(oneList);  // [1,2,3,4]  
	}
}

class User{
	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	@Override
	public String toString() {
		return "User [name=" + name + "]";
	}	
}

Vector

含义

  • 和ArrayList一样,底层都是采用可变数组
  • 方法几乎都有synchronized关键字,是线程安全的

体系结构

  • Collection
    • List
      • Vector

案例

public class VectorDemo {	
	//Vector
	    //含义:和ArrayList一样,底层都是采用可变数组
	    //体系结构
	         //Collection
	              //List
	                  //ArrayList
	                  //Vector
	                       //方法都有synchronized,代表线程安全。
	
	
	//synchronized代表同步,线程安全
	
	//字符串
	    //String
	
	    //StringBuffer       方法都添加了synchronized
	    //StringBuilder      方法没有添加synchronized修饰
	
	
	public static void main(String[] args) {
		
		List data = new Vector();
		
		data.add("11");
		System.out.println(data.get(0));
		
	}
}

Stack

含义

栈数据结构

特点

先进后出;后进先出

体系结构

  • Collection
    • List
      • Vector
        • Stack

常用方法

  • push
  • peek
  • pop
  • empty

案例

package com.neu.day08._02list;

import java.util.Stack;
import java.util.Vector;

public class StackDemo {
	
	
	//栈
	    //特点:后进先出[LIFO]
	    //体系结构
	       //Collection
	            //List
	                //ArrayList
	                //Vector
	                    //Stack
	
	public static void main(String[] args) {
		Stack stack = new Stack();
		
		stack.push("11");
		stack.push("22");
		stack.push("33");
		
		//pop 删除并且返回栈顶元素
		
		System.out.println(stack.pop());
		System.out.println(stack.pop());
		System.out.println(stack.pop());
		
		if(!stack.empty()){
			System.out.println(stack.pop());
		}
	 
		/*
		//返回栈顶元素但不删除
		System.out.println(stack.peek());
		System.out.println(stack.peek());
		System.out.println(stack.peek());
		*/
	}
}

LinkedList

含义

双向链表数据结构

链表分类

  • 单向链表
  • 双向链表

体系结构

  • Collection
    • List
      • LinkedList

注意点

没有根据下标索引去获取元素的方法;但有获取第几个元素的功能

和ArrayList的比较

存储结构不同

  • ArrayList底层采用可扩容的数组
  • LinkedList采用双向链表结构

效率不一样

获取[根据位置]添加删除
数组
链表
排序树

案例

public class LinkedListDemo {
	
	//LinkedList
	    //含义:链表
	    //分类
	        //单向链表
	        //双向链表
	    //体系结构
	        //Collection
	             //List
	                  //ArrayList
	                  //Vector
	                       //Stack
	                  //LinkedList
	
	
	public static void main(String[] args) {
		LinkedList list = new LinkedList();
		
		list.add("11");
		list.add("22");
		list.add("33");
		
		//链表不同于数组,链表没有所谓的下标索引说法。
		//这里获取的是第几个节点,底层从头节点往后节点依次查找
		System.out.println(list.get(2));
		
		testAdd();
	}
	
	public static void testAdd(){
		//思路
		//获取当前时间
		//添加
		//获取当前时间
		
		List arrayList = new ArrayList();
		long start = System.currentTimeMillis();
		
		//添加
		for(int i=0;i<100000;i++){
			arrayList.add(0,i);
		}
		long end = System.currentTimeMillis();
		System.out.println("数组插入的时间为:"+(end-start));
		
		
		List linkedList = new LinkedList();
		start = System.currentTimeMillis();
		
		//添加
		for(int i=0;i<100000;i++){
			linkedList.add(0,i);
		}
		end = System.currentTimeMillis();
		System.out.println("链表插入的时间为:"+(end-start));
	}
	
	//ArrayList和LinkedList的比较
	//存储结构不一样
	//效率
	
}

标签:Java,arrayList,List,System,add,println,ArrayList,out
来源: https://blog.csdn.net/weixin_45149736/article/details/119393073

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有