集合

 

1、List接口

List有序,可以存储重复元素

package LESSON11;
import java.util.ArrayList;
import java.util.Iterator;
public class demo1 {
//List接口实现类ArrayList
//数组结构,查询快,增删慢
    public static void main(String[] args) {
        ArrayList list=new ArrayList();
        list.add(1);
        list.add(2.2);
        list.add("133");
        list.add('a');
        System.out.println(list);
        System.out.println(list.isEmpty());
        System.out.println(list.size());
        System.out.println(list.contains(2));
        list.remove(1);
        System.out.println(list);
            
        ArrayList list2=new ArrayList();
        list2.add("arraylist");
        list2.add("linkedlist");        
       // list.add(list2);//添加集合
        list.addAll(list2);//添加集合中的元素
        System.out.println(list);
        System.out.println(list.containsAll(list2));
//        list.removeAll(list2);
//        System.out.println(list);
        list.retainAll(list2);
        System.out.println(list);
                
        ArrayList list3=new ArrayList();
        list3.add("张三");
        list3.add("李四");
        list3.add("王五");
        
        Object arr[]=list3.toArray();//返回一个数组
        for (int i = 0; i < arr.length; i++) {
//            System.out.println(arr[i]);
        }
        
        //遍历集合中的元素
        //1 for循环
        for (int i = 0; i < list3.size(); i++) {
            System.out.println(list3.get(i));    
        }
        System.out.println("------------------");
        //2 增强for循环
        for (Object o : list3) {
            System.out.println(o);            
        }
        System.out.println("------------------");        
        //3迭代器遍历
        Iterator it= list3.iterator();//将集合中的元素返回至迭代器中
        while(it.hasNext()){//判断迭代器是否有下一个元素
            System.out.println(it.next());//返回下一个元素
            
        }                        
    }
}
package LESSON11;
import java.util.LinkedList;
public class demo2 {
    /**
    List接口实现类LinkedList
    链表结构,查询慢,增删快
     */
    public static void main(String[] args) {
        LinkedList list=new LinkedList();
        list.add("Tom");
        list.add("rose");
        list.add("jerry");
        list.add("lucy");
        System.out.println(list);
        list.addFirst("john");
        list.addLast("marry");
        System.out.println(list);
        
        Object obj1=list.removeFirst();
        Object obj2=list.removeLast();
        System.out.println(obj1);
        System.out.println(obj2);
        System.out.println(list);        
    }
}

2、Set接口

package LESSON11;
import java.util.HashSet;
public class exercise {
    /**
     Set是一个无序的不能包含重复元素的接口。
     Set接口只包含从Collection继承过来的方法,增加了对add方法的限制,不允许有重复的元素。
     Set接口通用的实现类有HashSet、TreeSet和LinkedHashSet
     */
    public static void main(String[] args) {
        HashSet set1=new HashSet();
        HashSet set2=new HashSet();        
        String str[]={"java","html","css","js","bootstrap","html","java"};
        //把重复的元素存入一个集合,把不重复的元素存入另外一个集合
        for (int i = 0; i < str.length; i++) {    
            boolean bo=set1.add(str[i]);
            if(!bo){//如果向set1添加不成功
                set2.add(str[i]);//将元素添加到set2集合中
            }
        }
        set1.removeAll(set2);//移除重复元素
        System.out.println(set1);//不重复的元素
        System.out.println(set2);//重复的元素
//两种遍历方式(无get方法)
        //1 增强for循环
        for (Object o : set1) {
            System.out.println(o);            
        }
        System.out.println("------------------");        
        //2迭代器遍历
        Iterator it= set1.iterator();//将集合中的元素返回至迭代器中
        while(it.hasNext()){//判断迭代器是否有下一个元素
            System.out.println(it.next());//返回下一个元素            
        }
HashSet set3=new HashSet();
        set3.add("张三");
        set3.add("李四");
        set3.add("王五");
        set3.add("赵六");
        System.out.println(set3);
        System.out.println(set3.contains("yan"));
        set3.remove("王五");
        System.out.println(set3);
        Object obj[]=set3.toArray();
        for (int i = 0; i <obj.length; i++) {
            System.out.println(obj[i]);
            
        }
        //set3.clear();
        HashSet set4=new HashSet();
        set4.add("张三");
        System.out.println(set3.size());
        
        set3.retainAll(set4);
        System.out.println(set3);                      
} }

3、Map接口

Map接口实现类
java.util.HashMap<K,V>     无序
java.util.TreeMap<K,V>      有序

package LESSON11;
import java.util.Collection;
import java.util.HashMap;
import java.util.Set;
public class demo3 {
    /**
     Map集合:以键值对形式存储
     键不能重复,值可以重复,键一旦重复,值会被覆盖
     */
    public static void main(String[] args) {
        HashMap map=new HashMap();
        map.put("1001", "张三");//向map集合添加元素
        map.put("1002", "李四");
        map.put("1003", "王五");
        map.put("1004", "赵六");
        System.out.println(map);
        System.out.println(map.get("1001"));//通过键获取到值
        map.remove("1004");//通过键移除元素
        System.out.println(map);
        System.out.println(map.size());//集合长度
        System.out.println(map.isEmpty());
        System.out.println(map.containsKey("1001"));
        System.out.println(map.containsValue("李四"));
        
        System.out.println("----------------------");
        HashMap map1 =new HashMap();
        map1.put("1001", "张三");
        map1.put("1002", "李四");
        map1.put("1003", "王五");
        Set set=map1.entrySet();//返回map集合元素至Set视图
        for (Object o : set) {
            System.out.println(o);
            
        }
        
        Set set1=map1.keySet();//返回map集合中的键至Set视图
        for (Object o : set1) {
            System.out.println(o+"="+map1.get(o));//遍历Map集合
            
        }
        System.out.println("---------------------");
        Collection coll=map1.values();//返回map集合中的键至Set视图
        for (Object o : coll) {
            System.out.println(o);            
        }
        
        HashMap map2 =new HashMap();
        map2.put("1005", "小明");
        map2.put("1006", "晓明");
        map1.putAll(map2);//添加map集合中的元素
        System.out.println(map1);
    }
}

4、泛型

泛型就是广泛的数据类型

好处:无需转型

泛型类

泛型方法

泛型接口

package LESSON11;
import java.util.ArrayList;
import java.util.HashMap;
class User{
    String name;
    public User(String name) {
        this.name=name;
    }
    
}
public class demo4{
    
    public static void main(String[] args) {
        
         ArrayList<Integer> list=new ArrayList<Integer>();
         list.add(123);
         list.add(456);
         
         HashMap<String, String> map= new HashMap<String, String>();
         map.put("1001", "杨园园");
         map.put("1002", "詹三");
        
         ArrayList<User> list2=new ArrayList<User>();
         list2.add(new User("战狼"));
         list2.add(new User("亮剑"));
         list2.add(new User("雪豹"));
         
         for (int i = 0; i < list2.size(); i++) {
             System.out.println(list2.get(i).name);
            
        }             
    }

}
package LESSON11;

//泛型接口
interface A<F>{
    public F create(F f);
    
}
class Admin{
    String name;
}
class B implements A<Admin>{
    @Override
    public Admin create(Admin admin) {
        // TODO Auto-generated method stub
        return admin;
    }
}
//泛型类
public class demo6<T> {
    public T t;
    
    //泛型方法
    public T test(){
        return t;
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        demo6<Double> demo=new demo6<Double>();
        demo.t=3.14;
        demo.test();

    }

}

 5、工具类

Collections工具类和Arrays工具类

package LESSON11;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;//导入工具类的包,不是Collection,Collection是集合
import java.util.List;

public class demo5 {

    public static void main(String[] args) {
        /**
    Collections提供了集合操作的常用算法,这些算法都以静态方法的形式提供,
    这些静态方法的第一个参数都是需要对其操作的集合。
         */
        ArrayList<Integer> list=new ArrayList();
        list.add(11);
        list.add(3);
        list.add(2);
        list.add(44);
        list.add(88);
        Collections.sort(list);//排序,默认升序
        Collections.reverse(list);//反转集合中的顺序
        System.out.println(list);
        Collections.shuffle(list);//随机排序
        System.out.println(list);
        System.out.println(Collections.max(list));//查找极大值
        System.out.println(Collections.min(list));//查找极小值
        System.out.println();
        
        
        /*Arrays
         * 此类包含用来操作数组(比如排序和搜索)的各种方法。*/
        int a[]={22,11,55,33,66};
        Arrays.sort(a);//排序,默认升序
        
        List<int[]> list2=Arrays.asList(a);//返回一个受指定数组支持的固定大小的列表。
        //System.out.println(list2);//集合地址 [[I@1e58cb8]
        for (int i = 0; i < list2.size(); i++) {
            for (int j = 0; j < a.length; j++) {
                //System.out.println(list2.get(i));//数组地址 [I@1e58cb8
                System.out.println(list2.get(i)[j]);//遍历集合中的数组
            }
            
        }
        System.out.println();
        int a2[]=Arrays.copyOf(a, 3);//复制数组
        for (int i = 0; i < a2.length; i++) {
            System.out.println(a2[i]);
        }
        
        Arrays.fill(a2, 100);//初始化数组
        for (int i = 0; i < a2.length; i++) {
            System.out.println(a2[i]);//全为100.
        }


    }

}

 



posted @ 2019-06-06 17:57  勤奋的园  阅读(155)  评论(0编辑  收藏  举报