Java集合框架
Java集合框架:是一种工具类,就像是一个容器可以存储任意数量的具有共同属性的对象。
Java集合中成员很丰富,常用的集合有ArrayList,HashMap,HashSet等。线程安全的有Vector,HashTable。线程不安全的有LinkedList,TreeMap,ArrayList,HashMap等等。
`
Java的容器类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些子接口或实现类。通过Collection与Map接口导出其他子接口及实现类的框架示意图如下图所示:
ArrayList
ArrayList基于数组实现,可以通过下标索引直接查找到指定位置的元素,因此查找效率高,但每次插入或删除元素,就要大量地移动元素,插入删除元素的效率低。它允许任何符合规则的元素插入甚至包括null。
LinkedList
LinkedList同样实现List接口,与ArrayList不同的是,LinkedList是基于双向链表实现的,可以在任何位置进行高效地插入和移除操作。
public class ArrayList{
public static void main(String[] args) {
// TODO Auto-generated method stub
//1.生成ArrayList对象
ArrayList list=new ArrayList();
//2.向集合中添加元素
list.add("aabb");
list.add("abc");
list.add(1, "aaa");//在下标是1的位置插入元素"aaa",元素"abc"向后移动
list.add("abc");
System.out.println(list.get(0));
System.out.println(list.get(1));
System.out.println(list.get(2));
//遍历
System.out.println("--------------------------------------");
for(int i=0;i<list.size();i++) {//list.size()集合中的元素个数
System.out.println(list.get(i));
}
System.out.println("-------------------------");
//增强for循环遍历
for(Object obj:list) {
System.out.println(obj);
}
}
public class LinkedList{
public static void main(String[] args) {
// 1、创建多个狗狗对象
Dog ououDog = new Dog("欧欧", "雪娜瑞");
Dog yayaDog = new Dog("亚亚", "拉布拉多");
Dog meimeiDog = new Dog("美美", "雪娜瑞");
Dog feifeiDog = new Dog("菲菲", "拉布拉多");
// 2、创建LinkedList集合对象并把多个狗狗对象放入其中
LinkedList dogs = new LinkedList();
dogs.add(ououDog);
dogs.add(yayaDog);
dogs.addLast(meimeiDog);
dogs.addFirst(feifeiDog);
// 3、查看集合中第一条狗狗的昵称
Dog dogFirst=(Dog)dogs.getFirst();
System.out.println("第一条狗狗的昵称是"+dogFirst.getName()+"。" );
// 4、查看集合中最后一条狗狗的昵称
Dog dogLast=(Dog)dogs.getLast();
System.out.println("最后一条狗狗的昵称是"+dogLast.getName()+"。" );
// 5、删除集合中第一个狗狗和最后一个狗狗
dogs.removeFirst();
dogs.removeLast();
// 6、显示删除部分狗狗后集合中各条狗狗信息
System.out.println("\n删除部分狗狗后还有" + dogs.size() + "条狗狗。");
System.out.println("分别是:");
for (int i = 0; i < dogs.size(); i++) {
Dog dog = (Dog) dogs.get(i);
System.out.println(dog.getName() + "\t" + dog.getStrain());
}
}
}
HashMap
HashMap是基于哈希表的Map接口的实现,是以key-value存储形式存在,即主要用来存储键值对。HashMap的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为Null。另外,HashMap中的映射不是有序的,即HashMap无序。
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class HashMapDemo2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Map map=new HashMap();
Person p1=new Person("zhangsan",21);
Person p2=new Person("lisi",11);
Person p3=new Person("wangwu",24);
map.put(p1.getName(), p1);
map.put(p2.getName(), p2);
map.put(p3.getName(), p3);
//遍历所有的键
Iterator it=map.keySet().iterator();
while(it.hasNext()){
System.out.println(it.next());
}
//遍历所有的值
Iterator values=map.values().iterator();
while(values.hasNext()){
System.out.println(values.next());
}
}
}