听着金志文的夏洛特烦恼还有些忧伤,唉,女人的心情是你永远调不完的BUG~ 算了~
回头看着集合的结构框图蒙圈了,好几个版本,看的一个视频怎么介绍的就这么着吧,颜值不高的框图,理解万岁~
对集合的理解点到为止,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));
}
/************************************************/
}
}
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);
}
}