集合相关 *** 作

集合相关 *** 作,第1张

集合相关 *** 作

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 listStr= new ArayList();

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

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

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

List

ArrayList

 List arraylsit = new ArrayList(); //声明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 sublist = arraylist.subList(1,2);  //截取子集
			  //对集合汉字排序
			   Collection.sort(arraylist,new Comparator(){
			        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 queuelinkedlist = new linkedList();  //声明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 dequelinkedlist = new linkedList();   //声明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 sethashset = new HshSet(); //声明集合
                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 maphashmap = new HashMap(); //声明集合
                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> iterator = maphashmap.entrySet().iterator();
                while(iterator.hasNext()){
                System.out.println(iterator.next());          //通过迭代器查看集合
                } 
                ----------------------------------------------------------
                maphashmap.clear();  //清空集合

        //声明集合
        Map 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> iterator = map.entrySet().iterator();
        while (iterator.hasNext()) {
            System.out.println("one-----" + iterator.next() + "     ");
        }

        //通过Map.entrySet遍历key,value在foreach中使用entry遍历
        for (Map.Entry 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;


public class Collection_Array {
	public static void main(String[] args){
		//声明数组
		String[] str = {"啊红","啊黄","啊紫","啊绿",
				"啊粉","啊青","啊哈"};
	   //转为集合
		List list = Arrays.asList(str);
		System.out.println(list);
		
		//对数组转换的集合 *** 作就是对原数组的 *** 作
		//增删元素是不支持的 *** 作 会导致原数组扩容或缩容
		
		//支持替换元素
		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[] 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);
	}
}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zaji/5672611.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-17
下一篇2022-12-16

发表评论

登录后才能评论

评论列表(0条)

    保存