集合相关操作

List接口集合继承于Collection接口。存储值不唯一(允许重复),有序(以元素的插入次序来放置元素,不会重新排列)。

Set接口继承于Collection接口,存储值唯一(不允许重复),无序。

Map接口存储一组成对的键-值。提供key-value的映射,map中key不要求有序,不允许重复,value值同样不要求有序,但允许重复。

 

数组集合区别

1.数组必须声明存放数据的类型,而集合可以存放多种数据类型(填写泛型后只能写一种类型)

int[] aa = {1,2,4,5};

List list = new ArrayList();
list.add(1);
list.add("asd");
list.add(true);

List<String> listStr= new ArayList<String>();

listStr.add("数据1");  //编译通过

listStr.add(2);  //编译错误

2.声明数组长度固定,不会再改变。而创建集合不需要声明长度,并且长度可变

List

ArrayList

 List<String> arraylsit = new ArrayList<String>(); //声明ArrayList集合
			   arraylist.add("你好");
			   arraylist.add("我的");
			   arraylist.add("boo");
			   System.out.println(arraylist);   //[你好,我的,boo]
			   arraylist.add(2,"好");           
			   System.out.println(arraylist);   //[你好,我的,好,boo]
               arraylist.set(3,"大boo");         //[你好,我的,好,大boo]
			   Boolean boo = arraylist.contains("大二"); //查看是否存在“大二”
			   System.out.println(boo);          //存在返回true  不存在返回false
			   List<String> sublist = arraylist.subList(1,2);  //截取子集
			  //对集合汉字排序
			   Collection.sort(arraylist,new Comparator<String>(){
			        public int compare(String o1, String o2){
					  return o1.length()-o2.length();          // 对集合汉字排序
					}                                                    
			   });
			   -------------------------------------------------------------
			   Collections.sort(arrl);                     //对集合数字排序
			   Collections.shuffle(arrl);                  //乱序
               sublist.remove(1);                 //删除集合,对截取的子集也有影响
			   arraylist.clear();                 //清空集合

ArrayList扩容步骤

1.在内存中创建一个新的数组。

2.将原数组的数据复制到新数组中。

3.系统会将原数组回收。

需要注意的是,每次将扩容1.5倍,太大造成资源浪费,太小服务器品方创建回收,服务器压力大。

ArrayList做插入,删除数据时,底层用到的都是数组,也就是数组的扩容缩容,会降低运行效率。

Queue-LinkedList(单向队列)

 Queue<String> queuelinkedlist = new LinkedList<String>();  //声明Queue LinkedList 集合
queuelinkedlist.offer("数据1");     //添加元素
queuelinkedlist.offer("数据2");
queuelinkedlist.offer("数据3");

queuelinkedlist.offer("数据4");

queuelinkedlist.offer("数据5");

String str = queuelinkedlist.peek(); //引用首个元素   数据1
queuelinkedlist.poll();             //删除首个元素
String str = queuelinkedlist.peek(); //引用首个元素  数据2

queuelinkedlist.remove(2);//删除指定元素  

Queue-LinkedList做插入,删除数据时,因为是单链,只能单进单出,拿到指定的数据效率会非常慢。

Deque_LinkedList(双向队列)

Deque<String> dequelinkedlist = new LinkedList<String>();   //声明Deque LinkedList集合
dequelinkedlist.offer("数据1");     //添加元素
dequelinkedlist.offerLast("数据2");//集合末尾添加元素
dequelinkedlist.offerFirst("数据3");//集合最前位置添加
dequelinkedlist.offer("数据4");     //集合最前位置添加
dequelinkedlist.poll();             //删除首元素
dequelinkedlist.pollLast();         //删除末尾元素
String sstr = dequelinkedlist.peek(); //引用首元素
String lstr = dequelinkedlist.peekLast();//引用末尾元素

Deque-LinkedList做插入,删除数据时,因为是双向连表,首未数据都可以进行操作,效率会比单链高。

Iterator迭代器接口声明了如下方法:

hasNext():判断集合中元素是否遍历完毕,如果没有,就返回true

next():返回下一个元素

remove():从集合中删除上一个有next()方法返回的元素。

Set(集合):Set是最简单的一种集合。集合中的对象不按特定的方式排序,并且没有重复对象。

Set

Set<String> sethashset = new HshSet<String>(); //声明集合
                sethashset.add("121");
                sethashset.add("122");
                sethashset.add("123");
                sethashset.add("122");

System.out.println(sethashset);

Set集合是无序且唯一的,如果存在同样的数据,会有去重效果

Set具有与Collection完全一样的接口,因此没有任何额外的功能,不像前面有两个不同的List。实际上Set就是Collection,只 是行为不同。(这是继承与多态思想的典型应用:表现不同的行为。)Set不保存重复的元素。

Map

Map<Integer,String> maphashmap = new HashMap<Integer,String>(); //声明集合
                maphashmap.put(1,"数据q");    //添加元素
                maphashmap.put(2,"数据2");
                maphashmap.put(3,"数据3");
                String str = maphashmap.get(3); //通过key获取value
                maphashmap.remove(1);          //通过key删除value
                Boolean boo = maphashmap.isEmpty(); //检查是否为空
                ---------------------------------------------------------
                Iterator<Entry<Integer,String>> iterator = maphashmap.entrySet().iterator();
                while(iterator.hasNext()){
                System.out.println(iterator.next());          //通过迭代器查看集合
                } 
                ----------------------------------------------------------
                maphashmap.clear();  //清空集合


        //声明集合
        Map<Integer, String> map = new HashMap<>();
        //添加元素
        map.put(2, "one");
        map.put(1, "one2");
        map.put(5, "one3");
        map.put(4, "one4");
        map.put(3, "one5");


        //1.迭代器
        Iterator<Map.Entry<Integer, String>> iterator = map.entrySet().iterator();
        while (iterator.hasNext()) {
            System.out.println("one-----" + iterator.next() + "     ");
        }

        //通过Map.entrySet遍历key,value在foreach中使用entry遍历
        for (Map.Entry<Integer, String> entry : map.entrySet()) {
            System.out.println("two-----" + entry.getKey() + entry.getValue() + "     ");
        }

        //通过Map.keySet遍历key,
        for (Integer key : map.keySet()) {
            String value = map.get(key);
            System.out.println("three-----" + key + value);
        }

        //
        for (Integer key : map.keySet()) {
            System.out.println("four-----" + key);
        }
        for (String value : map.values()) {
            System.out.println("four-----" + value);
        }

集合与数据之间的转换



import java.util.Arrays;
import java.util.List;

/**
 * 
 * @author ljf
 *集合于数组之间的转换
 *
 */
public class Collection_Array {
	public static void main(String[] args){
		//声明数组
		String[] str = {"啊红","啊黄","啊紫","啊绿",
				"啊粉","啊青","啊哈"};
	   //转为集合
		List<String> list = Arrays.asList(str);
		System.out.println(list);
		
		//对数组转换的集合操作就是对原数组的操作
		//增删元素是不支持的操作 会导致原数组扩容或缩容
		/*运行会报错 
	    扩容了
		  list.add("yes");
	    缩容了 
		  list.remove(1);
	*/
		//支持替换元素
		list.set(5, "天子笑,");
		System.out.println(list);
		//将集合转为数组
		String[] str1 =  (String[]) list.toArray();
		//遍历数组
		for (int i = 0; i < str1.length; i++) {
			System.out.print(str1[i]+" ");
		}
		
		
		/*
		 * 如果是int类型转换为集合
		 * aslist()方法的参数必须是对象
		 * 应先把int[]转化为Integer
		 */
		 int[] num={3,5,7,9};
		 //遍历数组
		 System.out.println();
		 for (int i = 0; i < num.length; i++) {
			System.out.print(num[i]+" ");
		}
		 Integer[] arraynum = new Integer[num.length];
		 for (int i = 0; i < num.length; i++) {
			 arraynum[i]  = num[i];
		}
		 List list1 = Arrays.asList(arraynum);
		 System.out.println();
		 System.out.println(list1);
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值