关于java集合的一些小结

。。。。。省略了需要引入的包

* collection接口的测试,collection包含了list和set接口。

 * list:Arraylist,vector,linkedList。
 * list是有序的,即集合里面的数据元素顺序和插入顺序是一致的,数据元素可以重复。
 * ArrayList底层是用数组实现的,适用于查询,不适合增加数据元素和删除。
 * vector和ArrayList基本一样,唯一的不同是线程安全的,在考虑并发的时候用。
 * Linkedlist的底层使用一个双向循环链表实现的,适合增加和删除数据,但是查询速度慢。
 * list的sort方法可以对元素进行排序,排序元素必须实现了compareable接口。
 * 
 * set:hashset和treeset
 * set集合中的元素不可重复,且是无序的(和插入元素的顺序不一致)。
 * hashset的底层是数组,hashset如何保证数据的不可重复性?
 * 先判断待插入元素的hashcode,使用hashcode方法,如不一样,则是新元素,可插入。如果一样,用equals方法判断内容是否一样,不一样就插入,否则认为元素重复。
 * 
 * treeset会对插入的元素(实现了compareable接口)进行排序,按照插入元素首字母顺序,hashset不会排序。所以hashset插入元素效率高与treeset。
 * 
 * list和set集合的遍历方式:增强for循环(底层就是迭代器)和迭代器
 * 另外list集合还可以通过普通for循环来实现遍历。
 * 
 * 
 * map接口:接口中的每一个元素不是一个对象,而是一个key-value键值对。通过遍历key值来得到value,key值不可重复,value可重复。
 * map:hashmap和treemap
 * treemap可以根据key值进行排序,而hashmap没有这样的功能。
 * hashmap的底层是数组。
 * hashmap适用于增删操作,而treemap适用于按顺序遍历value。
 * hashset可看做是value为空的hashmap。
 * map的遍历方法有两种:keyset方法和entryset方法,不可使用迭代器直接对map进行遍历。
 */
public class CollectionTest {


public static void main(String[] args) {
// TODO Auto-generated method stub
SetTest set=new SetTest();
set.test();
System.out.println("===============");
ListTest ltest=new ListTest();
ltest.test();
System.out.println("===============");
MapTest mapTest=new MapTest();
//mapTest.test();
mapTest.test1();

}

}
class SetTest{
Set<String> set=new HashSet<String>();
String []ss= {"zz","eb","mm","dd"};
public void test()
{
for(int i=0;i<ss.length;i++)
{
set.add(ss[i]);
}
for (String s : set) {
System.out.println(s);
}
}

}
class ListTest{
List<String> list=new ArrayList<String>();
String []ss= {"zz","eb","mm","dd"};
ListTest(){
for(int i=0;i<ss.length;i++)
{
list.add(ss[i]);
}
}
public  void test()
{

//使用迭代器遍历list集合
Iterator it=list.iterator();
while(it.hasNext())
{
System.out.println(it.next());

    }

}
}


class MapTest{
Map<String,String> map=new HashMap<String,String>();

//利用keyset方法遍历
public void test() {

map.put("01","老人与海");
map.put("02", "水浒传");
map.put("03","红楼梦");


//获取key值集合
Set<String> set=map.keySet();
//使用增强for循环遍历key,通过key值获取value
for (String s : set) {
System.out.println(map.get(s));
}
}
//利用entryset方法遍历
public void test1()
{
String[] ss={
"老人与海","水浒传","红楼梦"
};
for(int i=0;i<ss.length;i++)
{
map.put(i+"", ss[i]);
}
String s1,s2;
for ( Map.Entry<String, String> entry:map.entrySet()) {
s1=entry.getKey();
s2=entry.getValue();
System.out.println(s1+":\t"+s2);
}

}


}

猜你喜欢

转载自blog.csdn.net/goudu7509/article/details/80502469