List集合和Map集合方法详解

集合

Collection集合

Collection 主要使用的List 和 Set

List有序集合可以有重复

Set无序集合没有重复没有索引

主要使用方法

		//添加元素: boolean add(E e)
        //移除指定元素  boolen remove(Object o)
        //清楚集合所有元素 clear()
        //判断集合是否存在指定元素  boolen contains(Object o)
        //判断集合是否为空 boolen isEmpty()
        //集合的长度  int size()

        //创建collection对象
        Collection<String> c = new ArrayList<String>();
        //添加元素: boolean add(E e)
        c.add("hello");
        c.add("world");
        c.add("java");
        System.out.println(c);//[hello, world, java]

        //移除  boolen remove(Object o)
        c.remove("java");
        System.out.println(c);//[hello, world]

        //清楚集合所有元素 clear()
        //c.clear();

        //判断集合是否存在指定元素  boolen contains(Object o)
        System.out.println(c.contains("hello"));//true
        System.out.println(c.contains("javascript"));//false

        //判断集合是否为空 boolen isEmpty()
        System.out.println(c.isEmpty());//false

        //集合的长度  int size()
        System.out.println(c.size());//2

Collection遍历方法

		//Iterator<E> iterator(); 返回此集合元素的迭代器,通过集合中的iterator()方法得到
        Iterator<String> it =c.iterator();

        //next(): 返回迭代中的下一个元素
      /* System.out.println(it.next());//hello
        System.out.println(it.next());//world
        System.out.println(it.next());//java
        System.out.println(it.next());//异常 NoSuchElementException:被请求的元素不存在
       */

        //hasNext(): boolen 如果迭代具有更多元素,则返回true
//        if (it.hasNext()) {
//            System.out.println(it.next());//hello
//        }
//        if (it.hasNext()) {
//            System.out.println(it.next());//world
//        }
//        if (it.hasNext()) {
//            System.out.println(it.next());//java
//        }
//        if (it.hasNext()) {//无元素则返回false
//            System.out.println(it.next());
//        }
        while(it.hasNext()){
            System.out.println(it.next());
        }
        //forEach遍历
        c.forEach(System.out::println);

        //for循环遍历
        for(String s : c){
            System.out.println(s);
        }

List集合

ArrayList 查找效率高

LinkedList 增删效率高

List 特有的方法:set() get() Collection里面没有

List 特有迭代器 ListIteractor previous()向上遍历 hasprevious()逆向遍历返回boolen

ListIteractor迭代器遍历可以添加元素 Iteractor不可以

		//实例化ArrayList
        List<String> c = new ArrayList<String>();
        ArrayList<String> al=new ArrayList<>();
        var list =new ArrayList<>();
        //var list1=List.of(1,2,3,"hello","php",new Date());//固定集合不可改变
        //list1.add("qqq");//异常
        //System.out.println(list1);
		 //添加元素: boolean add(E e)
        c.add("hello");
        c.add("world");
        c.add("java");
 		//实例化ArrayList
        List<String> c = new ArrayList<String>();
        ArrayList<String> al = new ArrayList<>();
        var list = new ArrayList<>();
        //var list1=List.of(1,2,3,"hello","php",new Date());//固定集合不可改变
        //list1.add("qqq");//异常
        //System.out.println(list1);


        //添加元素: boolean add(E e)
        c.add("hello");
        c.add("world");
        c.add("java");

        c.add(1, "javascript");//指定位置插入指定的元素
        System.out.println(c);//[hello, javascript, world, java]
//        c.add(10,"javas");
//        System.out.println(c );//产生异常 超出下标
        c.set(1, "java1111");//修改指定位置元素
        System.out.println(c);//[hello, java1111, world, java]

        System.out.println(c.get(1));//java1111   获取指定位置元素
        System.out.println(c.remove(1));//java1111   删除指定索引元素并返回指定元素

		//特有的遍历
		 for (int i = 0; i < c.size(); i++) {
        		    System.out.println(c.get(i));
      		  }

LinkedList

LinkedList 特有的方法:

addFirst(E e) 列表开头插入指定元素 addlast(E a) 指定元素追加到列表末尾

removeFirst() 删除列表第一个元素并返回删除元素 removeLast() 删除列表最后一个元素并返回元素

		LinkedList<String> ll = new LinkedList<>();
        ll.add("hello");
        ll.add("world");
        ll.add("java");

        //addFirst(E e) 列表开头插入指定元素   addlast(E a) 指定元素追加到列表末尾
        ll.addFirst("javascript");
        ll.addLast("javase");
        System.out.println(ll);//[javascript, hello, world, java, javase]

        //removeFirst() 删除列表第一个元素并返回删除元素   removeLast() 删除列表最后一个元素并返回元素
        System.out.println(ll.removeFirst());//javascript
        System.out.println(ll.removeLast());//javase
        System.out.println(ll);//[hello, world, java]

Set

不能普通fori遍历

  for(String s : c){
            System.out.println(s);
        }

List Set 排序

 List<String> list = List.of("java", "javascript", "php", "python", "c", "go", "ruby");
        list = new ArrayList<String>(list);
        System.out.println(list);
        //升序 a-z
        list.sort(String::compareTo);
        System.out.println(list);
        //降序 z-a
        list.sort(Comparator.reverseOrder());
        System.out.println(list);

        //按字母个数升序
        list.sort(Comparator.comparingInt(String::length));
        //按字母个数降序
        list.sort((a, b) -> b.length() - a.length());
        System.out.println(list);

        
        List<String> listok = new ArrayList<>(list);
        List<Integer> list2 = new ArrayList<>(Arrays.asList(10, 1, 0, 9, 8, 3, 25, 18, 60, 33));
        System.out.println(list2);
        //升序
        list2.sort((a, b) -> a - b);
        System.out.println(list2);
        //降序
        list2.sort((a, b) -> b - a);
        System.out.println(list2);

Map

Map<Key,Value>

HashMap<> TreeMap

		Map<Integer, String> map =new HashMap<>();
        map.put(1,"hello");
        map.put(3,"java");
        map.put(2,"world");

        System.out.println(map.get(1));//hello 获得指定键值的元素
        System.out.println(map);//{1=hello, 2=world, 3=java}

        System.out.println(map.remove(1));//hello 移除指定键值元素并返回元素
        System.out.println(map.isEmpty());//false

        //遍历
        for(int i : map.keySet()){
            System.out.println(map.get(i));
        }

        //遍历
        Set<Map.Entry<Integer, String>> sm=map.entrySet();
        for(Map.Entry<Integer,String> m : map.entrySet()){
            Integer key =m.getKey();
            String value=m.getValue();
            System.out.println(key+","+value);
        }
		//遍历
		m.forEach((k, v) -> {
			System.out.println(k);
			System.out.println(v);
		});
	
		//读取map中指定的key的值,如果有就返回,如果没有就使用第二个参数为默认值返回
        Object lang = map.getOrDefault("k6", "c");
        System.out.println(lang);

案例分析

ArrayList<String> al = new ArrayList<>();
        String[] color = {"♣", "♦", "♠", "♥" };
        String[] nums = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" };
        for (String c : color) {
            for (String n : nums) {
                al.add(c + n);
            }
        }
        al.add("大王");
        al.add("小王");
        Collections.shuffle(al);
        System.out.println(al);
        ArrayList<String> a1 = new ArrayList<>();
        ArrayList<String> a2 = new ArrayList<>();
        ArrayList<String> a3 = new ArrayList<>();
        ArrayList<String> a4 = new ArrayList<>();
        for (int i = 0; i < al.size(); i++) {
            if (i <  al.size() - 3) {
                if (i % 3 == 0) {
                    a1.add(al.get(i));
                }
                if (i % 3 == 1) {
                    a2.add(al.get(i));
                }
                if (i % 3 == 2) {
                    a3.add(al.get(i));
                }
            } else {
                a4.add(al.get(i));
            }
        }
        System.out.println(a1);
        System.out.println(a2);
        System.out.println(a3);
        System.out.println(a4);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值