什么是集合?集合主要框架是什么?这里我做了一个简单的流程图来增加我们对集合的认知。
(一)、各个接口的特点
由图我们可知Collection和Map是父接口,List、Set作为Collection的子接口;其与是各个接口相对应的实现类。接下来进行一一剖析。
特点:
Map:键值对存在,key值唯一、无序。
Collection:无序、不唯一
List:有序、不唯一
Set:无序、唯一
(二)、ArrayList和LinkedList的区别
ArrayList:在应用时经常进行查询,查询效率比较高。
LinkedList:在应用时经常进行增删改。增删改的效率比较高。
注意:效率比较低不代表不可以应用(例:ArrayList也可以进行增删改)
(三)、实例练习
1、ArrayList的应用
//实现对狗的增加与删减
//1.初始化狗狗信息
Dog dog1 = new Dog("拉布拉多");
Dog dog2 = new Dog("旺财");
Dog dog3 = new Dog("哈士奇");
Dog dog4 = new Dog("田野狗");
//2.创建ArrayList集合
List list = new ArrayList();
//3.用list集合对象存储 已经初始化好的狗狗对象信息
list.add(dog1);
list.add(dog2);
list.add(dog3);
list.remove(dog1);
//4.获取list集合对象的总数(获取集合的长度:size()方法)
System.out.println("狗狗总数:"+list.size());
//5.用传统for循环遍历狗狗信息
for(int i=0;i<list.size();i++){
System.out.println( ((Dog)list.get(i)).getName() );
}
2、LinkedList应用
//1.初始化狗狗信息
Dog dog1 = new Dog("拉布拉多");
Dog dog2 = new Dog("旺财");
Dog dog3 = new Dog("哈士奇");
Dog dog4 = new Dog("田野狗");
//2.创建ArrayList集合
LinkedList list = new LinkedList();
//3.用list集合对象存储 已经初始化好的狗狗对象信息
list.add(dog1);
list.add(dog2);
list.add(dog3);
//4.用传统for循环遍历狗狗信息
for(int i=0;i<list.size();i++){
System.out.println( ((Dog)list.get(i)).getName() );
}
System.out.println("***在头部添加狗狗*******************************");
list.addFirst(dog4);
//测试
for(int i=0;i<list.size();i++){
System.out.println( ((Dog)list.get(i)).getName() );
}
System.out.println("***获取头部的狗狗信息*******************************");
System.out.println( ((Dog)list.getFirst()).getName());
System.out.println("***删除头部的狗狗信息*******************************");
list.removeFirst();
//测试
for(int i=0;i<list.size();i++){
System.out.println( ((Dog)list.get(i)).getName() );
}
3、Set集合应用
public static void main(String[] args) {
Set<String> sets = new HashSet<String>();
sets.add("a");
sets.add("c");
sets.add("66");
sets.add("a");
sets.add("a");
sets.add("a");
//1.使用增强遍历HashSet
for(String s: sets){
System.out.println(s);
}
System.out.println("*******************************");
//2.使用迭代器遍历HashSet
Iterator<String> its = sets.iterator();
while(its.hasNext()){
System.out.println(its.next());
}
System.out.println("*******将list集合转换为set(去重)************************");
List<String> list = new ArrayList<String>();
list.add("aaa");
list.add("b");
list.add("d");
list.add("aaa");
list.add("aaa");
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
System.out.println("去重后-------->");
Set<String> setNews = new HashSet<String>(list);
for(String s:setNews){
System.out.println(s);
}
}
4、map集合
public static void main(String[] args) {
//1.创建map集合
Map<String,Object> map = new HashMap<String,Object>();
//2.给map集合存储数据
map.put("a", "1");
map.put("b", "3");
map.put("c", 5);
//3.循环遍历map
//(1)调用keySet()方法获取键值集合
Set<String> sets = map.keySet();
//(2)调用iterator()方法获取迭代器对象
Iterator<String> its = sets.iterator();
//(3)while循环中调用its对象的hasNext()方法循环读取并判断是否有下一个值
while(its.hasNext()){
//(4)调用next()方法获取key值
String key = its.next();
//(5)调用get(key)方法获取value值
System.out.println("key:"+key+" value:"+map.get(key));
}
}
}
5、map常用的方法
public static void main(String[] args) {
Map<String,Object> map = new HashMap<String,Object>();
map.put("a", "33");
map.put("b", "44");
map.put("c", "22");
//1.map中的get()方法的含义:通过某个key获取对应的value值
String value = (String)map.get("a");
System.out.println(value);
//2.获取map集合的长度
System.out.println("获取map集合的长度:"+map.size());
//3.调用remove()方法去除对应记录
map.remove("b");
System.out.println("调用remove(b),获取map集合的长度:"+map.size());
//4.调用keySet()方法获取键值集合
Set<String> sets =map.keySet();
System.out.println("键值集合:"+sets);
//5.调用values()方法获取的是map的所有value值集合
System.out.println(map.values());
//6.直接输出map集合
System.out.println(map);
}
}
四、总结
集合应用更加使Java语言接近生活,让我们更能理解。各个实现类都有其自己的特点,所以应用时更能够选择出自己所要做出的行动。
孰能生巧,多多联系。