List的相关应用

1. List特点

序列----有序列表

  1. 允许存放重复的元素
  2. 有序 ----存储的顺序
  3. 可以在任何位置上插入元素,更利于做元素的查找

2.Vector

1. 底层结构动态数组

2. 线程安全 1.2 JDK 版本 默认容量10

3. 不建议使用

3.ArrayList 

  1. 底层结构是动态数组
  2. 线程不同步
  3. 更善于做随机访问-遍历   
  4. 添加元素和删除元素的方法 运行速度要比LinkedList慢
package com.openlab.coll;

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

public class TelNote {
	
	private Set<List<Person>> set = null;
	private List<Person> list = null;
	
	
	public TelNote() {
		
		set = new HashSet<List<Person>>();
	}
	
	/**
	 *  添加元素
	 * @param p
	 */
	public void add(Person p){
		if(list == null){
			list = new ArrayList<Person>();
		}
		list.add(p);
		set.add(list);
	}
	
	/**
	 * 查找人
	 * @return
	 */
	public Person getPerson(String name){
		
		
		Iterator<List<Person>> it = set.iterator();
		
		while(it.hasNext()){
			
			List<Person> persons = it.next();
			
			for(Person p :persons){
				
				if(p.getName().equals(name)){
					
					return p;
				}
			}
		}
		
		return null;
		
	}
	

}
package com.openlab.coll;

public class Test1 {
	
	public static void main(String[] args) {
		
		
		TelNote tel = new TelNote();
		
		
		
		for (int i = 0; i < 5; i++) {
			
			tel.add(new Person("zhangsanfeng"+i, 99+i));
			
		}
		
		Person p = tel.getPerson("zhangsanfeng1");
		
		System.out.println(p);
		
		
	}

}

4.LinkedList

  1. 底层结构链表
  2. 有序---有索引
  3. 线程不同步 线程不安全
  4. 实现了Queue 说明 它是个队列 FIFO(先进先出)

(LIFO)(后进先出)

  1. 堆栈的实现 队列的实现 以及双端队列的实现
  2. LinkedList 更擅长做添加和修改以及删除等操作 运行速度要比ArrayList快

Element

Offer

Poll

Peek

Remove

来自于队列的接口


什么情况下使用ArrayList 什么情况下使用LinkedList

  1. 随机访问 –遍历   ArrayList
  2. 插入删除操作较多时  LinkedList
  3. 线程不安全队列结构 使用 LinkedList
  4. 线程不安全动态数组  使用ArrayList

5.Stack栈结构

4.package com.openlab.coll;
5.
6.import java.util.LinkedList;
7.import java.util.List;
8.import java.util.Stack;
9.
10.public class ListTest {
11.	
12.	public static void main(String[] args) {
13.       
14.		LinkedList<String> list  = new LinkedList<String>();
15.		 
16.		 list.add("123");
17.		 list.add("345");
18.		 list.add("1098");
19.		 list.add("uuu");
20.		 list.add("ooo");
21.		 
22.		 list.addFirst("123");
23.		 list.addLast("999");
24.		 
25.		String key =  list.element();
26.		 
27.		 System.out.println(list);
28.		 System.out.println(key);
29.		 
30.		list.getFirst();
31.		
32.		System.out.println(list);
33.		
34.		list.offer(null);
35.		
36.		String result = list.peek();
37.		
38.		System.out.println(result);
39.		
40.		String result1 = list.poll();
41.		
42.		System.out.println(list);
43.		
44.		Stack<String> s = new Stack<String>();
45.		
46.		s.push("123");
47.		s.push("456");
48.		s.push("90099");
49.		s.push("163");
50.		s.push("1200");
51.		
52.		System.out.println(s);
53.		
54.		String bRet = s.pop();
55.		
56.		System.out.println(bRet); 
57.		
58.	}
59.
60.}

6.Map映射

什么map -----映射 ---对应数学中的函数

Map中的key 叫键

Map 中的Value 叫值

总称也叫键值对

Map本身是一个接口与Collection任何关系

 Map特点和用法:

1.通常情况下一个key对应一个value

2.  一个key可以对应两个value 但是对应后值会被覆盖

3.  多个key可以对应一个值

Map不存在index   也没有迭代器接口

package com.openlab.coll;

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class MapTest {
	
	public static void main(String[] args) {
		
		Map<String,String> map = new HashMap<String,String>();
		
		map.put("1", "zhangsanfeng");
		map.put("2", "zhangsanfeng");
		map.put("3", "zhangsan");
		map.put("4", "feng");
		map.put("5", "sanfeng");
		
	
		Set<Entry<String,String>> set =  map.entrySet();
		
		Iterator it = set.iterator();
		
		while(it.hasNext()){
			
			System.out.println(it.next());
		}
		
		
		Set<String> setstring = map.keySet();
		
		Iterator it1 = setstring.iterator();
		
		while(it1.hasNext()){
			
			System.out.println(it1.next());
		}
		
		Collection list =   map.values();
		
		Iterator it2 = list.iterator();
		
		while(it2.hasNext()){
			System.out.println(it2.next());
		}
		
//		System.out.println(list);
		
		map.remove("2");
		
		System.out.println(map);
		
		

		
		
		
		
		
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值