栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

J2EE

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

J2EE

文章目录
  • 1.List集合的增删改查
    • 1.1增删改查
    • 1.2 Arrylist与linkedList的区别
      • 1.2.1 Arrylist
      • 1.2.2 LinkedList
  • 2.List集合的三种遍历方式
  • 3.Linkedlist 中堆栈及队列
  • 4.List集合去重
  • 5.List集合增长因子论证、List集合如何去优化

1.List集合的增删改查 1.1增删改查
package com.tft.temp;

import java.util.ArrayList;
import java.util.List;

public class Demo01 {
	public static void main(String[] args) {
		//创建一个list集合
		List list =new ArrayList<>();
		//给集合里面增加值
		list.add("zs");
		list.add("li");
		list.add("tft");
		list.add("ww");
		list.add("pp");
		//输出
		System.out.println("增加后的集合:"+list);
		//修改
		list.set(0, "hh");
		System.out.println("修改后的集合"+list);
		//删除
		String remove = list.remove(1);
		System.out.println("根据下标被删除的内容"+remove);
		System.out.println("删除后的内容"+list);
	}


}
1.2 Arrylist与linkedList的区别 1.2.1 Arrylist
  • 特点: ArrayList底层是数组
1.2.2 LinkedList
  • 特点:Linkedlist的底层是链表
2.List集合的三种遍历方式

注意:遍历里面不能进行remove删除 ,会报当前改变异常

package com.tft.temp;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Demo01 {
	public static void main(String[] args) {
		//创建一个list集合
		List list =new ArrayList<>();
		//给集合里面增加值
		list.add("zs");
		list.add("li");
		list.add("tft");
		list.add("ww");
		list.add("pp");
		//第一种方式:for循环输出
		for (int i = 0; i < list.size(); i++) {
			System.out.println("使用for循环输出:"+list.get(i));
		}
		//第二种方式:for循环加强方式输出
		for (String str : list) {
			System.out.println("使用for循环加强输出:"+str);
		}
		//第三种方式:Iterator迭代器输出
		Iterator iterator = list.iterator();
		//判断是否有下一个值
		while(iterator.hasNext()) {//代表有就执行下一步
			System.out.println("迭代器输出:"+iterator.next());//输出
		}


	}


}

3.Linkedlist 中堆栈及队列
  • 堆栈
    特点: 先进后出
  • 队列
    特点:先进先出
package com.tft.temp;

import java.util.LinkedList;

public class Demo03 {
	public static void main(String[] args) {
		//开始测试  队列
		duilie dl=new duilie(new LinkedList<>());
		//调用增加的方法
		dl.push("zs");
		dl.push("ls");
		dl.push("hh");
		dl.push("dd");
		//开始取出
		System.out.println("================");
		System.out.println(dl.pop());
		System.out.println(dl.pop());
		System.out.println(dl.pop());
		System.out.println(dl.pop());
		//开始测试 堆栈
		duizhan dz=new duizhan(new LinkedList<>());
		//调用增加的方法
		dz.push("zs1");
		dz.push("ls1");
		dz.push("we1");
		dz.push("mz1");
		//开始取出
		System.out.println("================");
		System.out.println(dz.pop());
		System.out.println(dz.pop());
		System.out.println(dz.pop());
		System.out.println(dz.pop());
	}
	
	
	
}
//创建一个队列类
	class duilie{
		private LinkedList list;
		//增加元素的方法
		public void push(String list) {
			this.list.add(list);
		}
		//移除元素的方法(取出/出去)
		public String pop() {
			return this.list.remove();
		}
		
		public LinkedList getList() {
			return list;
		}
 
		public void setList(LinkedList list) {
			this.list = list;
		}
 
		public duilie(LinkedList list) {
			super();
			this.list = list;
		}
 
		@Override
		public String toString() {
			return "duilie [list=" + list + "]";
		}
		public duilie() {
		}
	}
	
	//创建一个堆栈类
		class duizhan{
			private LinkedList list;
			//增加元素的方法
			public void push(String list) {
				this.list.add(list);
			}
			//移除元素的方法(取出/出去)
			public String pop() {
				return this.list.removeLast();//从最后一个开始取出即可(删除的对象)
			}
			
			public LinkedList getList() {
				return list;
			}
 
			public void setList(LinkedList list) {
				this.list = list;
			}
			public duizhan(LinkedList list) {
				super();
				this.list = list;
			}
			@Override
			public String toString() {
				return "duilie [list=" + list + "]";
			}
			public duizhan() {
				super();
			}

}

4.List集合去重

注意:底层是是重写eq方法来执行去重元素

package com.tft.temp;

import java.util.ArrayList;
import java.util.List;

public class Demo04 {
	public static void main(String[] args) {
		
		//案例一 创建集合 增加五个元素 要求去重并且只输出去重后的元素
		List list=new ArrayList<>();
		//新增一个集合 来保存去重后的元素
		List oldList=new ArrayList<>();
		//开始增加
		list.add("张三");
		list.add("李四");
		list.add("王二");
		list.add("张三");
		System.out.println("去重前"+list);
		//开始去重
		//遍历
		for (String string : list) {
			//判断如果新集合不包含老集合的元素就增加到新集合
			if(!oldList.contains(string)) {
				oldList.add(string);
			}
		}
		System.out.println("去重后"+oldList);
	}
	

	
}

5.List集合增长因子论证、List集合如何去优化

1.list集合底层是数组
2.list集合底层数组的初始化容量是10、增长因子是0.5
3.list集合进行优化、只需要扩大初始化容量、减少扩容的次数、进一步提到性能

问:数组的长度是不可变的、可list集合为何能无限制的添加元素? 答:数组容量达到上限会进行扩容

有意识的设置初始化容量

package com.tft.temp;

import java.lang.reflect.Field;
import java.util.ArrayList;


public class Demo05 {
public static void main(String[] args) {
	
	        //创建一个集合
			ArrayList arr=new ArrayList<>();
			//循环增加100次
			for (int i = 0; i < 50; i++) {
				arr.add(i);
				try {
					getElementDataLength(arr);
				} catch (SecurityException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	 
		private static void getElementDataLength(ArrayList arr) throws Exception, SecurityException {
			//拿到List集合属性对象
			Field f = arr.getClass().getDeclaredField("elementData");
			//打开属性的设置权限
			f.setAccessible(true);
			//拿到数组对象
			Object[] ob = (Object[])f.get(arr);
			//测试
			System.out.println("容器中的元素个数:"+arr.size()+"容器中的元素大小:"+ob.length);

	
}
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/993551.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号