java-新手笔记(集合篇)

集合 collection 模版

LinkedList<String> list1 = new LinkedList<>();
LinkedList 是一个类 <>泛型集合限制类型一般是对象类 new 对象需要开辟一个新的地址存储元素
new LinkedList<>() 创建了一个新的 LinkedList 实例

集合概念

常见集合有 collection,和map两种

collection中用HashSet 和TreeSet,,ArrayList,LinkedList ,LinkedHashSet

ArrayList,LinkedList 可以保存重复的集合元素

Arrays List 便于查询集合中的元素

LinkedList 便于增删集合中的元素

HashSet 和TreeSet 可以用于去除集合中的元素,

HashSet 集合排序是无序的,不会按照插入的顺序显示集合中的元素(非乱序)

TreeSet 集合排序是有序的(对于数字而言升序),不会按照插入的顺序显示集合中的元素(非乱序)

需要按照集合的插入顺序的话,可以使用(LinkedHashSet)

        
//创建一个集合对象(ArrayList,LinkedList,HashSet,TreeSet,LinkedHashSet)
        ArrayList<Integer> integers = new ArrayList<>();
        LinkedList<Integer> list = new LinkedList<Integer>();
        HashSet<Integer> integers1 = new HashSet<>();
        TreeSet<Integer> integers2 = new TreeSet<>();
        Set<Integer> setLinkedHashSet = new LinkedHashSet<>();

collection 的增删改查含得

1.增

 add(index,element) 根据索引值插入集合元素(Haset和TreeSet除外)

 add (element)默认在集合尾端插入元素

 ArrayList<Integer> integers = new ArrayList<>();
        integers.add(1);
        integers.add(0,3);
        System.out.println(integers);

//输出值 [3, 1]

        LinkedList<Integer> list = new LinkedList<Integer>();
        list.add(1);
        list.add(0,3);
        System.out.println(list);

//输出值 [3, 1]

        HashSet<Integer> integers1 = new HashSet<>();
        integers1.add(67);
        integers1.add(1);
        integers1.add(5);
        integers1.add(3);
        integers1.add(0);
        System.out.println(integers1);

//注意:如果是数子是单位的话,会按照数字进行升序排序
 //输出值 [0, 1, 67, 3, 5]


        TreeSet<Integer> integers2 = new TreeSet<>();
        integers2.add(3);
        integers2.add(1);
// 输出值 [0, 1, 3, 5, 67]

        Set<Integer> setLinkedHashSet = new LinkedHashSet<>();
        setLinkedHashSet.add(3);
        setLinkedHashSet.add(1);
//输出值 [67, 1, 5, 3, 0]

运行结果

补充: add(array) 可以添加集合,是直接把以集合形式塞入另一个集合,不是以元素的方式进入集合

用addAll(array)可以添加整个集合全部元素

ArrayList<Integer> integers = new ArrayList<>();
        integers.add(1);
        integers.add(0,3);
         LinkedList<Integer> list = new LinkedList<Integer>();
        list.addAll(integers)
        System.out.println(list);
//输出为 [3, 1]

2.得(限LinkedList ArrayList)

get(index) 根据索引值获取集合元素

注意:LinkedList有次功能

根据集合获取第一个数值 getFirst()

根据集合获取最后一个值 getLast()

 ArrayList<Integer> integers = new ArrayList<>();
        integers.add(1);
        integers.add(0,3);
        integers.add(9);
        System.out.println(integers.get(1));
       //输出值 1
LinkedList<Integer> list = new LinkedList<>();
        list.add(9);
        list.add(1);
        list.add(0,3);
        integers.get(1);
        System.out.println(list);//输出值 [3, 9, 1]
        System.out.println(list.get(1)); //输出值 9
        System.out.println(list.getFirst());//输出值 3
        System.out.println(list.getLast()); //输出值 1

对于 HashSet,TreeSet ,可以用Iterator集合迭代器

概念引入:

hasNext:返回的是boolean值,它是从集合元素的最前头开始判断,如果后续有元素就返回true

这边只举一个HashSet的,TreeSet,LinkedSet,ArrayList,LinkedList都一样,

区别:

ArrayList,LinkedList 可以通过索引获取值

HashSet的,TreeSet,LinkedSet 无法通过索引获取值

 HashSet<Integer> integers1 = new HashSet<>();
        integers1.add(67);
        integers1.add(1);
        integers1.add(5);
        integers1.add(3);
        integers1.add(0);

        Iterator<Integer> integerIterator = integers1.iterator();
 while(integerIterator.hasNext()){
            System.out.println(integerIterator.next());
        }
//输出值 0 , 1 ,67 ,3, 5
System.out.println(integers1);
//输出值 [0, 1, 67, 3, 5]

错误写法

  Iterator<Integer> integerIterator = new HashSet<Integer>().iterator();
        new HashSet<Integer>().add(67);
        new HashSet<Integer>().add(1);
        new HashSet<Integer>().add(5);
        new HashSet<Integer>().add(3);
        new HashSet<Integer>().add(0);
        while(integerIterator.hasNext()){
            System.out.println(integerIterator.next());
        }
//必须新建一个集合实例,否则不会保留集合添加的数值
3.含

contains() 可以判断是否含有某个元素

containsAll() 可以判断是否含有(集合)所有元素

   ArrayList<Integer> integers = new ArrayList<>();
        integers.add(1);
        integers.add(0,3);
        LinkedList<Integer> list = new LinkedList<Integer>();
        list.addAll(integers);
        System.out.println(list.contains(1));//输出值 true
        System.out.println(list.containsAll(integers)); //输出值 true

containAll(element)会报错

System.out.println(list.containsAll(1));//系统会报错

4.改

set(index,element) 根据index值获取数值,在进行修改

 ArrayList<Integer> integers = new ArrayList<>();
        integers.add(1);
        integers.add(0,3);
        LinkedList<Integer> list = new LinkedList<Integer>();
        list.addAll(integers);
        list.set(0,98);
        System.out.println(list);//输出值 [98, 1]
5.查

indexOf(element) 查询的需要的元素,如果找到返回索引值,找不到返回-1

补充 如果该集合中有多个相同的元素时候,会返回第一个出现的位置

lastIndexOf 如果该集合中有多个相同的元素时候,会返回最后出现的位置

 ArrayList<Integer> integers = new ArrayList<>();
        integers.add(1);
        integers.add(0,3);
        LinkedList<Integer> list = new LinkedList<Integer>();
        list.addAll(integers);
        list.set(0,98);
        System.out.println(list.indexOf(1));//输出值 1
        System.out.println(list.indexOf(90)); //输出值 -1
        System.out.println(list); //输出值 [98, 1]
6.删

remove(index) 根据集合的索引的删除元素,返回集合对应索引的值

注意: 这是String类型,可以使用 remove(element) 删除特定元素,

Integer类型 ,系统会提示index类型

remove(element) 删除特定元素,如果删除成功返回true,否则false

 LinkedList<String> list1 = new LinkedList<>();
        list1.add("one");
        list1.add("two");
        list1.add("three");
        System.out.println(list1);//输出值 [one, two, three]
        System.out.println(list1.remove("three"));//输出值 true
        System.out.println(list1.remove(0)); //输出值 one
        System.out.println(list1);//输出值 [two]

collection 不同集合之间的操作

1.克隆

clone() 将一个集合复制出来进行备份,但此处是个Object类方法,

如果需要将此备份保留需要转类型

 LinkedList<String> list1 = new LinkedList<>();
        list1.add("one");
        list1.add("two");
        list1.add("three");
        LinkedList<String> list2 = (LinkedList<String>)list1.clone();
        System.out.println(list1.clone()); //输出值 [one, two, three]
        System.out.println(list2); //输出值 [one, two, three]
2.去交集

removeAll() 去除两个集合交集元素

注意 array1.removeAll(array2) 只对array1有效果,array2不会改变

LinkedList<String> list1 = new LinkedList<>();
        list1.add("one");
        list1.add("two");
        list1.add("three");
        LinkedList<String> list2 = (LinkedList<String>)list1.clone();
        System.out.println(list2);//输出值 [one, two, three]
        System.out.println(list1.removeAll(list2));//输出值 true
        System.out.println(list1);//输出值 []
        System.out.println(list2);//输出值 [one, two, three]
3.取交集

retainAll() 只保留两个集合交集元素

注意 array1.retain(array2) 只对array1有效果,array2不会改变

LinkedList<String> list1 = new LinkedList<>();
        list1.add("one");
        list1.add("two");
        list1.add("three");
        LinkedList<String> list2 = (LinkedList<String>)list1.clone();
        list1.add("four");
        System.out.println(list1);//输出值 [one, two, three, four]
        System.out.println(list2);//输出值 [one, two, three]
        System.out.println(list1.retainAll(list2));//输出值 true
        System.out.println(list1);//输出值 [one, two, three]
        System.out.println(list2);//输出值 [one, two, three]

集合map模版

 HashMap<String, Integer> stringIntegerHashMap = new HashMap<String, Integer>();
//<String, Integer>有键值对,所以第一个时限制key的类型,第2个是限制value的类型

map 用于利用键值key,和值value,的存储元素,用key作为索引来获取元素的值

map 增删改含得

1.增

put(key,value) key是键值 相当于数组下标,value是集合元素保留的值.

HashMap<String, Integer> stringIntegerHashMap = new HashMap<String, Integer>();
        stringIntegerHashMap.put("apple",01);
        stringIntegerHashMap.put("banana",02);
        stringIntegerHashMap.put("pear",03);
        System.out.println(stringIntegerHashMap);
//输出值 {banana=2, apple=1, pear=3}
2.得

get(key) 通过key值获取值


        HashMap<String, Integer> stringIntegerHashMap = new HashMap<String, Integer>();
        stringIntegerHashMap.put("apple",01);
        stringIntegerHashMap.put("banana",02);
        stringIntegerHashMap.put("pear",03);
        System.out.println(stringIntegerHashMap.get("banana"));//输出值 2
        System.out.println(stringIntegerHashMap);//输出值 {banana=2, apple=1, pear=3}

遍历map集合获取键值对

HashMap<String, Integer> stringIntegerHashMap = new HashMap<String, Integer>();
        stringIntegerHashMap.put("apple",01);
        stringIntegerHashMap.put("banana",02);
        stringIntegerHashMap.put("pear",03);
第一种用keySet
        Set<String> keys = stringIntegerHashMap.keySet();
        for (String key : keys) {
            Integer value = stringIntegerHashMap.get(key);
            System.out.println("Key: " + key + ", Value: " + value);
        }
/* 输出值 Key: banana, Value: 2
Key: apple, Value: 1
Key: pear, Value: 3
*/
第二种用entrySet
for (Map.Entry<String, Integer> entry : stringIntegerHashMap.entrySet()) {
            String key = entry.getKey();
            Integer value = entry.getValue();
            System.out.println("Key: " + key + ", Value: " + value);
        }
        
/* 输出值 Key: banana, Value: 2
Key: apple, Value: 1
Key: pear, Value: 3
*/
3.含

containKey(key);判断是否包含某元素的键值

containValue(value);判断是否包含某元素的存储值

 HashMap<String, Integer> stringIntegerHashMap = new HashMap<String, Integer>();
        stringIntegerHashMap.put("apple",01);
        stringIntegerHashMap.put("banana",02);
        stringIntegerHashMap.put("pear",03);
        System.out.println(stringIntegerHashMap.containsKey(01));//输出值 false
        System.out.println(stringIntegerHashMap.containsValue(01));//输出值 true
        System.out.println(stringIntegerHashMap);//输出值 {banana=2, apple=1, pear=3}

put(key,newValue) 可以通过同一个key值来修改值

HashMap<String, Integer> stringIntegerHashMap = new HashMap<String, Integer>();
        stringIntegerHashMap.put("apple",01);
        stringIntegerHashMap.put("banana",02);
        stringIntegerHashMap.put("pear",03);
        System.out.println(stringIntegerHashMap);//输出值 {banana=2, apple=1, pear=3}
        stringIntegerHashMap.put("apple",9);
        System.out.println(stringIntegerHashMap);//输出值 {banana=2, apple=9, pear=3}
4.删

remove(key) 根据key值删除对应的键值对

HashMap<String, Integer> stringIntegerHashMap = new HashMap<String, Integer>();
        stringIntegerHashMap.put("apple",01);
        stringIntegerHashMap.put("banana",02);
        stringIntegerHashMap.put("pear",03);
        System.out.println(stringIntegerHashMap);//输出值 {banana=2, apple=1, pear=3}
        stringIntegerHashMap.remove("banana");
        System.out.println(stringIntegerHashMap);//输出值 {apple=1, pear=3}

  • 34
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值