集合框架之list

1, UML集合类图(集合与集合之间的关系)

2,集合特点


1:list本身就是一个容器,我们学习集合框架就是了解容器的数据结构。

2:数组长度是固定的,list集合长度不固定。

3:数组是无序,且不可重复的,list集合是有序且可重复的。

ps:list集合直接移除对象(remove("a"))返回Boolean类型,通过下标移除(remove(0))返回这个下标对应的元素。


3,遍历方式

fori:

for(int i=0;i<xyy.size();i++){
System.out.println(xyy.get(i));
}

foreach:

for(Object o:xyy){
System.out.printIn(o);
}

lterator:

Iterator it=xyy.iterator();
whlie (it.hasNext()){
System.out.println(it.next());
}

 ps:有时候报错是需要强转。 

运行结果:

 

4,子类LinkedList

ArrayList查询&&修改快;删除新增慢


LinkedList删除&&新增快;查询修改慢

 

 


 实现队列&堆栈

	List< String> list=new LinkedList<>();
	Duilie dl=new Duilie(list);
	//Duizhan dl=new Duizhan(list);
	dl.push("1");
	dl.push("2");
	dl.push("3");
	System.out.println(dl.pop());
	System.out.println(dl.pop());
	System.out.println(dl.pop());

队列:先进先出

class Duilie{
	LinkedList ll=null;
	public Duilie(List<String> ll){
		this.ll=(LinkedList) ll;
	}
	public String pop() {
		return (String) ll.removeFirst();
	}
	public void push(String s) {
		ll.add(s);
	}
}

堆栈:先进后出

class Duizhan{
	LinkedList ll=null;
	public Duizhan(List<String> ll){
		this.ll=(LinkedList) ll;
	}
	public String pop() {
		return (String) ll.removeLast();
	}
	public void push(String s) {
		ll.add(s);
	}
}

5,增长因子

List集合底层是数组结构
 “可变数组”
 一旦超过默认数组大小,会自动扩容
 扩容增长因子为0.5

 运行结果:

 6,ArrayList去重

list集合装string类型时可以采用contains方法去重复

	List<String> list=new ArrayList<>();
	list.add("1");
	list.add("2");
	list.add("3");
	list.add("2");
	if(!list.contains("2")) {
		list.add("2");
	}
	System.out.println(list);

对于其他的类型而言,ArrayList集合去重与去重对象的equals方法有关

public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Student other = (Student) 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;
	}

增加equals方法后,运行结果中无重复值。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值