Java语言基础之集合乱舞Step2

听着金志文的夏洛特烦恼还有些忧伤,唉,女人的心情是你永远调不完的BUG~ 算了~

回头看着集合的结构框图蒙圈了,好几个版本,看的一个视频怎么介绍的就这么着吧,颜值不高的框图,理解万岁~

Java语言基础之集合乱舞Step2_第1张图片

  对集合的理解点到为止,Java这东西就是查库,用到哪里了查一查自然明了。


Collection 是Set List的父类,也就意味着Collection内所有的方法在Set List中都有,跟着打的用list做的小例子

package Com;

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

// Collection是set,list的父类,所有Colection有的方法,set,list都具备

public class main {

	
	public static void main_Colection(String[] args) {
		
		
		
		/*********说明add中添加的数据是对象******/
		List list=new ArrayList();
		list.add("123");
		list.add("333");		
		
		list.add(2); // 在list没有指定类型的时候,自动拆箱封箱,2被封箱为一个对象,存到list中,类似于new Integer(2)。
		list.add(new Integer(2));		
		System.out.println(list);// 输出结果	
		/***************************************/
		
		
		/***********list(Colection)的常用的一些方法***********/
		List<String> list2 =new ArrayList<String>();
		
		list2.add("1");
		list2.add("2");
		list2.add(1,"demo"); // 指定位置添加
		System.out.println(list2);//[1, demo, 2]
		
		System.out.println(list2.contains("2"));  // 判断是否含有2这个元素 true
		System.out.println(list2.isEmpty());   // 判断list是否为空 false
		
		/*******************************************/
		
		
		/****************迭代器和for循环进行循环遍历****************/
		//有删除功能的集合,推荐使用迭代器
		Iterator <String> Ite=list2.iterator(); //迭代器进行list遍历		
		while(Ite.hasNext())// 迭代器可以在遍历的同时,将数据进行删除
		{ 					// 迭代器删除只能使用迭代器的删除方法(是指针),不能使用list等集合的删除方法(是数组)
			String str=Ite.next();
			if(str.equals("demo"))
			{
				Ite.remove();
			}
			else
			System.out.println(str);
		}
		
		for(int i=0;i<list2.size();i++)  // for 循环遍历删除时,使用集合的方式删除list2.remove(i);
		{								// for循环删除时,特别需要注意最后一位是否已经删除,如果删除再调用会出现程序出错,有删除功能的集合,推荐使用迭代器
			if(list2.get(i).equals("demo"))
			{
			   list2.remove(i);
			}
			System.out.println(list2.get(i));
			
		}
		/************************************************/

	}

}




下面是单劈List,List就是一个数组而已,当数组用,当然还有ArrayList 和Vector的区别,用的时候要根据具体情况选用

package Com;

import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.ListIterator;
import java.util.Vector;




/**
 * 
 * list 常用子类
 * 
 *ArrayList 非线程安全,速度快 
 *Vector   线程安全 速度慢 
 *LinkList 单相 双向链表 在首位添加元素执行速度较快 而ArrayList在插入或删除某个元素执行速度较快
 *			LinkList可以非常快的模拟堆栈(先进后出)和队列(先进先出)
 */
public class main2 {

	/**
	 * @param args
	 */
	public static void main_list(String[] args) {
		
		/*ArrayList*/
		ArrayList<String> Arr=new ArrayList<String>();
		Arr.add("888");
		
		/*Vector*/
		Vector<String> Vec=new Vector<String>();  // 集合
		Vec.add("123");
		Vec.add("456");
		Vec.add("789");
		System.out.println(Vec);
		
		Iterator <String> Ite=Vec.iterator();	 // vector 使用迭代器进行遍历 且可以删除	
		while(Ite.hasNext())
		{
			System.out.println(Ite.next());
			
		}
//		
		
		ListIterator<String> Ite2=Vec.listIterator(); // 可以输出前一个迭代值
	
		
		
		Enumeration<String> enums=Vec.elements(); // vector 使用枚举进行遍历,不能删除元素 (不常用)
		while(enums.hasMoreElements())
		{
			System.out.println(enums.nextElement());
		}
		
		/*LinkedList*/
		LinkedList<String> linklist=new LinkedList<String>();
		linklist.add("1");
		linklist.addFirst("0");
		linklist.addLast("2");
		linklist.get(0);
		System.out.println(linklist);
		
	}

}


Set 的好处就是内部不能放两个相同的值,内部数据排序方式可以分为哈希排序(HashSet)和ASCII排序(TreeSet)

package Com;

import java.util.HashSet;
import java.util.TreeSet;

/**
 * Set
 * HashSet 存入的数据按照哈希值进行排序
 * TreeSet 按照ACSII进行排序
 * */

public class main3 {

	/**
	 * @param args
	 */
	public static void main_set(String[] args) {
		HashSet<String> set1=new HashSet<String>();	 // 按照哈希值进行排序	
		set1.add("a");
		set1.add("b");
		set1.add("c");
		System.out.println(set1);
		
		TreeSet<String> set2=new TreeSet<String>(); // 按照ACSII 排序
		set2.add("a");
		set2.add("b");
		set2.add("c");
		System.out.println(set2);
	}

}


Map:

package Com;

import java.util.HashMap;
import java.util.Hashtable;
import java.util.TreeMap;

public class main4 {

	/**
	 * map
	 * HashMap 非线程安全 速度快   键值可以为空   键值根据哈希值进行排序 
	 * HashTable 线程安全 速度慢      键值都不能为空
	 * TreeMap 根据Key进行排序
	 */
	public static void main(String[] args) {
		
		
		/*map 的增删改查*/
		/*HashMap*/  // 根据哈希值进行排序
		HashMap <String,String> map=new HashMap<String,String>();
		map.put("name", "zhangsan");
		map.put("age","12");  // 添加一个元素
		map.put("xx","xxx");
		map.put("xx", "1233");//更改元素
		map.remove("xx");// 删除元素
		map.get("age"); // 查找一个元素
		
		
		/*Hashtable*/  // 根据哈希值进行排序
		Hashtable<String, String> map2=new Hashtable<String, String>();
		map2.put("name", "zhangsan");
		map2.put("age","12");  // 添加一个元素
		
		/*TreeMap*/ // 根据ACSII 进行排序
		TreeMap<String,String> map3=new TreeMap<String,String>();
		map3.put("aa", "name");
		map3.put("cc","sex");
		map3.put("b", "age");
		System.out.println(map3);
		
	}

}




你可能感兴趣的:(Java语言基础之集合乱舞Step2)