------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
Collection:
1-List:元素是有序的,元素可以重复。以为有索引。
ArrayList:底层使用的数据结构是数组结构,线程不同步。特点:查询速度快,增删慢。
LinkdeList:底层使用的是链表结构,特点:增删速度快,查询慢。
特有方法:
addFirst();addLast();
getFirst();getLast();获取元素,但不删除元素。抛异常
removeFirst();removeLast();获取元素,并删除元素。抛异常
JDK1.6以后出现了替代方法
offerFirst();offerLast();
peekFirst();peekLast();获取元素,但不删除元素。不抛异常
pollFirst();pollLast();获取元素,并删除元素。不抛异常
Vector: 底层使用的数组结构,线程同步,被ArrayIist替代了。
2-Set:元素是无序的,不可以重复。
HashSet:底层数据结构是哈希表。
HashSet是如何保证元素的唯一性?
通过两个方法,hasCode和equals方法来完成的
如果元素的hashCode值相同,才会判断equals是否为true
如果元素的hashCode值不同,才会调用equals方法。
对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashCode和equals方法
TreeSet:可以集合中的元素进行排序。底层的数据结构是二叉树。
保证元素唯一性的依据:compareTo方法returne 0;
TreeSet排序的第一种方式:让元素自身具有比较性。
元素需要实现Comparable接口,覆盖compareTo方法。
Set集合的功能和Collection是一致的。
List:
凡是可以操作角标的方法都是该体系特有的方法。
增:
add(index,element);
addAll(index,Collection);
删:
remove(index);
改:
set(index,element);
查:
get(index);
subList(from,to);
listiterator();
代码实现:
import java.util.*;
class ListDemo
{
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void main(String[] args)
{
ArrayList al = new ArrayList();
al.add("01");
al.add("02");
al.add("03");
al.add("04");
sop("原集合:"+al);
al.add(4,"05");
sop("新集合(增):"+al);
al.remove(0);
sop("新集合(删):"+al);
al.set(1,"00");
sop("新集合(改):"+al);
System.out.println("新集合(查):");
for(int x = 0;x<al.size();x++)
{
sop(al.get(x));
}
}
}
List集合特有的迭代器。ListIterator是Iteratord的子类接口
import java.util.*;
class ListIteratorDemo
{
public static void sop(Object obj)
{
System.out.print(obj);
}
public static void main(String[] args)
{
ArrayList al = new ArrayList();
al.add("01");
al.add("02");
al.add("03");
al.add("04");
sop("原集合:"+al);
ListIterator li = al.listIterator();
while(li.hasNext())
{
Object obj = li.next();
if(obj.equals("01"))
{
li.set("00");
}
}
sop("新集合:"+al);
}
}
import java.util.*;
/*
LinkedList练习
堆列:先进后出,杯子。
队列:先进先出,水管。
*/
class LinkedListTest
{
public static void main(String[] args)
{
Queue q = new Queue();
q.myAdd("java01");
q.myAdd("java02");
q.myAdd("java03");
q.myAdd("java04");
while(!q.isNull())
{
System.out.println(q.myGet());
}
}
}
class Queue
{
private LinkedList queue;
public Queue()
{
queue = new LinkedList();
}
public void myAdd(Object obj)
{
queue.addFirst(obj);
}
public Object myGet()
{
return queue.removeFirst();//ruturn queue.removeLast();先进先出
}
public boolean isNull()
{
return queue.isEmpty();
}
}
泛型:
JDK1.5版本以后出的新特性,用于解决安全问题,是一个类型安全机制。
优点:
将运行时出现的ClassCastException异常,转移到编译时期。方便程序员解决问题,让运行问题减少,安全。
避免了强制转换麻烦。
import java.util.*;
class GenericDemo
{ public static void sop(Object obj)
{
System.out.println(obj);
}
public static void main(String[] args)
{
ArrayList <String> al = new ArrayList<String>();
al.add("java01");
al.add("java02");
al.add("java03");
al.add("java04");
Iterator <String> it = al.iterator();
while(it.hasNext())
{
sop(it.next());
}
}
}
Map集合:
该集合存储键值对,一对一对往里存,而且保证键的唯一性。
1、添加
put(K key,V value);
putAll(Map<? extends K,? extends V >m);
2、删除
clear();
remvoe(Object key);
3、判断
containsValue(Object value);
containsKey(Object key);
isEmpty();
4、获取
get(Object key);
size();
values();
entrySet();
keySet();
子类对象:
Hashtable:底层是哈希表结构,不可以存入null键和null值,线程同步。
HashMap:底层是哈希表结构,可以存入null键和null值,线程不同步。
TreeMap:底层是二叉树结构,线程不同步。可以用于给May集合中的键进行排序。
和Set很像,其实Set底层就是使用了Map集合。
import java.util.*;
/*
keySet();方法的使用
*/
class KeySetDemo
{
public static void main(String[] args)
{
Map<String,String> map = new HashMap<String,String>();
map.put("01","001");
map.put("02","002");
map.put("03","003");
Set<String> keySet = map.keySet();
Iterator<String> it = keySet.iterator();
while(it.hasNext())
{
String key = it.next();
String value = map.get(key);
System.out.println("key="+key+",,value="+value);
}
}
}
import java.util.*;
/*
entrySet()方法的使用
*/
class EntrySetDemo
{
public static void main(String[] args)
{
Map<String,String> map = new HashMap<String,String>();
map.put("01","001");
map.put("02","002");
map.put("03","003");
Set<Map.Entry<String,String>> entrySet = map.entrySet();
Iterator<Map.Entry<String,String>> it = entrySet.iterator();
while(it.hasNext())
{
Map.Entry<String,String> me = it.next();
String key = me.getKey();
String value = me.getValue();
System.out.println("key="+key+",,value="+value);
}
}
}