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

J2EE基础之集合框架list

Java 更新时间:发布时间: 百科书网 趣学号

目录

一、UML:统一建模语言

二、Collection接口三、List接口1、特点:有序、对象可以重复

2、遍历方式

3、List元素删除

4、List优化

5、通过Linkedlist实现队列以及堆栈的容器


一、UML
UML:统一建模语言
二、Collection接口
1、集合框架的顶级接口
2、是Set和List的父接口
3、但不是Map的父接口

三、List接口
1、特点:有序、对象可以重复
1.1 有序:

 

 打印结果为:

 

1.2 对象可以重复:

ArrayList list=new ArrayList<>();
		//新增
		list.add(new Preson("zs",19));
		list.add(new Preson("pzd",20));
		list.add(new Preson("王心凌",41));
		list.add(new Preson("ls",23));
		list.add(new Preson("老六",25));
		list.add(new Preson("王心凌",41));
		System.out.println(list);
		
		ArrayList listnew=new ArrayList<>();
		for (Object object : list) {
			if(!listnew.contains(object)) {
				listnew.add(object);
			}
		}
		System.out.println(listnew);//5个
	}

 

 打印结果为:

 那么如何去重复呢?

 * list集合去重底层原理
 * 结论:去重引用对象时,底层调用的是对象的equals方法

@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + age;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Preson other = (Preson) obj;
		if (age != other.age)
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		return true;
	}
	
	

 结果如下:

 

2、遍历方式
2.1 下标遍历    for循环

 

 2.2 foreach 

 

2.3 迭代器

 

 打印结果都为:

 

 

3、List元素删除
3.1 List集合的删除    

//删除
		Object obj2 = list.remove(1);//返回值是删除的元素
		list.remove("ww");
		System.out.println(obj2);
		System.out.println("------------------------");
		for (Object obj : list) {
			System.out.println(obj);
		}

 3.2 List集合的删除    倒序删除

 

 3.3 List集合的删除    迭代器

 

 4、List优化
List    实现类    ArrayList实际就是一个Object数组

list集合如何进行优化
 * 当代码中出现了多次add操作,涉及到了list集合容量多次改变,这是十分耗性能的操作,此时通过初始化容量,即可优化性能
 * 增长因子
 *
 * list集合长度是可变的,数组长度是不可变的
 * 结论1:list集合底层的数据结构是数组
 * 结论2:增长因子0.5,初始化容量10

//		String[] arr = new String[10];
//		arr = new String[11];
//		arr[11] = "zs";
//		arr = new String[12];
//		arr[12] = "zs";
		ArrayList list = new ArrayList<>(100);
		for (int i = 0; i < 200; i++) {
			list.add(i);
			getlen(list);
		}
	}

	private static void getlen(ArrayList list) throws Exception {
		Field f = list.getClass().getDeclaredField("elementData");
		f.setAccessible(true);
		Object[] elementData = (Object[]) f.get(list);
		System.out.println("当前集合的元素个数:"+list.size()+";当前list集合的容量是:"+elementData.length);
	}
		 

5、通过Linkedlist实现队列以及堆栈的容器

public static void main(String[] args) {
		//Duilie duilie=new Duilie(new LinkedList<>());
		Duizhan duilie=new Duizhan(new LinkedList<>());
		duilie.push("zs");
		duilie.push("ls");
		duilie.push("ww");
		duilie.push("八戒");
		System.out.println(duilie.pop());
		System.out.println(duilie.pop());
		System.out.println(duilie.pop());
		System.out.println(duilie.pop());
	}
}
class Duilie{
	private LinkedList ll;

	public Duilie(LinkedList ll) {
		super();
		this.ll = ll;
	}
	
	//存
	public void push(Object obj) {
		ll.add(obj);
	}
	//取
	public Object pop() {
		return ll.remove();
	}
	
}	
	
class Duizhan{
		private LinkedList ll;

		public Duizhan(LinkedList ll) {
			super();
			this.ll = ll;
		}
		
		//存
		public void push(Object obj) {
			ll.add(obj);
		}
		//取
		public Object pop() {
			return ll.removeLast();
		}
}

 

堆栈:现进后出

 

 

队列:先进先出

 集合框架:

 集合框架(List)就分享到这了,希望能对大家有所帮助!

转载请注明:文章转载自 www.051e.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号