对ArrayList集合、Iterator 迭代器、LinkedList 链表、HashMap散列表的基础认识

ArrayList集合

  • 它是提供一种存储空间可变的存储模型,存储的数据容量可以发生改变
  • 它的特点是:底层是数组实现的,长度可变
  • 添加数据的时候不需要考虑索引,默认将数据添加到末尾

ArrayList类常用的方法

构造方法:public ArrayList()  创建一个空的集合对象

成员方法:

add(E e)将指定的元素添加到此列表的末尾
add(int index,E element)在此列表中的指定位置插入指定的元素
addAll(Collection<? extends E> c)按指定集合的Iterator返回的顺序将指定集合中的所有元素追加到此列表的末尾

示例代码:


​   public static void main(String[] args) {
        //	add(E e) 将指定的元素追加到此列表的末尾。
        //	add(int index, E element) 在此列表中的指定位置插入指定的元素。
        ArrayList<String> arrayList=new ArrayList<>();
        arrayList.add("1");
        arrayList.add("2");
        arrayList.add("3");
        arrayList.add(1,"4");
        System.out.println(arrayList);
        // addAll(Collection<? extends E> c) 按指定集合的Iterator返回的顺序将指定集合中的所有元素追加到此列表的末尾。(在这里使用)
        ArrayList<String> arrayList1=new ArrayList<>();
        arrayList1.add("11");
        arrayList1.add("22");
        arrayList.addAll(arrayList1);
        System.out.println(Arrays.toString(new ArrayList[]{arrayList}));
    }
}
//运行结果:[1, 4, 2, 3]
//        [[1, 4, 2, 3, 11, 22]]
clear()从列表中删除所有元素
contains(Obiect o )如果此列表中包含指定的元素,则返回true
set(int index,E element)用指定的元素替换此列表中指定的元素
remove(int index)删除该列表中指定位置的元素
remove(Object o)从列表中删除元素的第一个出现(如果存在)

示例代码:

 public static void main(String[] args) {
        //clear() 从列表中删除所有元素。
        ArrayList<String> arrayList=new ArrayList<>();
        arrayList.add("1");
        arrayList.add("2");
        arrayList.add("3");
        arrayList.add(1,"4");
        arrayList.clear();
        System.out.println(arrayList);
    }
//运行结果:没有输出
 public static void main(String[] args) {
        //contains(Object o) 如果此列表包含指定的元素,则返回 true 。
        ArrayList<String> arrayList=new ArrayList<>();
        arrayList.add("1");
        arrayList.add("2");
        arrayList.add("3");
        arrayList.add(1,"4");
        System.out.println(arrayList.contains("3"));
    }
//运行结果:true

 public static void main8(String[] args) {
        //set(int index, E element)用指定的元素替换此列表中指定位置的元素。
        ArrayList<String> arrayList = new ArrayList<>();
        arrayList.add("1");
        arrayList.add("2");
        arrayList.add("3");
        arrayList.add("4");
        arrayList.add("5");
        //remove(int index)删除该列表中指定位置的元素。
        //remove(Object o)从列表中删除指定元素的第一个出现(如果存在)。
        System.out.println(arrayList.set(2,"6));
        System.out.println(arrayList.remove(2));
        System.out.println(arrayList.remove("5"));
        System.out.println(arrayList);
    }
​

​

​
iterator()以正确的顺序返回该列表中的元素的迭代器
listIterator返回列表中的列表迭代器
list Iterator(int index)从列表中的指定位置开始,返回列表中的元素(按正确顺序的列表迭代器
indexOf(Object o)返回此列表中指定元素的第一次出现的索引,如果此列表中不包含元素,则返回-1
lastIndexOf(Object o)返回此列表中指定元素的最后依次出现的索引,如果此列表不包含元素,则返回-1

示例代码:

 public static void main(String[] args) {
        //iterator()以正确的顺序返回该列表中的元素的迭代器。
        // listIterator()返回列表中的列表迭代器(按适当的顺序)。
        //listIterator(int index)从列表中的指定位置开始,返回列表中的元素(按正确顺序)的列表迭代器。
        //indexOf(Object o) 返回此列表中指定元素的第一次出现的索引,如果此列表不包含元素,则返回-1。
        //lastIndexOf(Object o) 返回此列表中指定元素的最后一次出现的索引,如果此列表不包含元素,则返回-1。
        ArrayList<String> arrayList = new ArrayList<>();
        arrayList.add("1");
        arrayList.add("2");
        arrayList.add("3");
        arrayList.add("4");
        arrayList.add("5");
        System.out.println(arrayList.iterator());
        System.out.println(arrayList.listIterator());
        System.out.println(arrayList.listIterator(1));
        int i= arrayList.indexOf("4");
        int j= arrayList.lastIndexOf("3");
        System.out.println(i);
        System.out.println(j);
    }
toArray() 以正确的顺序(从第一个到最后一个元素—)返回一个包含此列表中所有元素的数组
subList(int fromIndex, int toIndex)返回此列表中指定的fromIndex(包括)和toIndex之间的独占视图
isEmpty()如果此列表中不包含元素,则返回true

示例代码:

​
 public static void main(String[] args) {
        //toArray()以正确的顺序(从第一个到最后一个元素)返回一个包含此列表中所有元素的数组。
        //subList(int fromIndex, int toIndex)返回此列表中指定的 fromIndex (包括)和 toIndex之间的独占视图。
        //isEmpty()如果此列表不包含元素,则返回 true 。
        ArrayList<String> arrayList = new ArrayList<>();
        arrayList.add("1");
        arrayList.add("2");
        arrayList.add("3");
        arrayList.add("4");
        arrayList.add("5");
        System.out.println(arrayList);
        Object[] objects=arrayList.toArray();
        System.out.println(objects);
        System.out.println(arrayList.toArray().length);
        System.out.println(arrayList.subList(0,3));
        System.out.println(arrayList.isEmpty());
    }

​

Iterator迭代器

  • 它是Java集合框架的一种机制,是一种遍历集合(如列表、集合和映射等)的接口
  • 它提供一种统一的方式来访问集合中的元素,而不需要了解底层集合的具体实现细节。
  • 它是一种用于访问集合的方法,可用于迭代ArrayList和HashSet等集合
  • Java Iterator迭代器是一种单向遍历机制,只能从前往后遍历集合中的元素,不能往回遍历
  • 同时,在使用迭代器遍历集合是,不能直接修改集合中的元素,可能会导致ConcurrentMOdificationException异常,解决方法是:使用迭代器中的remove()方法来删除当前元素,亦或者建立一个集合,记录需要删除的元素,之后统一删除,亦或者不使用Iterator迭代器遍历

Iterator迭代器常见使用方法

next()用来返回迭代的下一个元素,并把指针向后移动一位
hasNext()用来判断集合中是否有下一个元素可以迭代。如果返回true,说明可以迭代
remove()从集合中删除最后访问的元素

示例代码:

  public static void main(String[] args) {
        //迭代器
        ArrayList<String> arrayList = new ArrayList<>();
        arrayList.add("1");
        arrayList.add("2");
        arrayList.add("3");
        arrayList.add("4");
        //返回迭代器
        Iterator<String> iterator = arrayList.iterator() ;
        //使用hasNext()是否有下一个元素 next取出下一个元素
        //while循环
          while(iterator.hasNext()){
              System.out.print(iterator.next()+" ");
          }
    }

这里首先集合获取迭代器使用Iterator()方法,让迭代器iterator逐个返回集合中所有元素最简单的方法是是使用while循环

LinkedList链表

  • 链表(Linked list) 是一种常见的基础数据结构,是一种线性表,但是并不按照线性的顺序存储数据,而是在每一个节点里存到下一个节点的地址
  • 链表分单向链表和双向链表,它是一种数据容器
  • 它与ArrayList 相比,LinkedList更加擅长增加和删除的操作

LinkedList链表常见方法

(添加)void addFirst(E e)在此列表的开头插入指定的元素
(添加)void addLast(E e)将指定元素追加到此列表的末尾
(获取)getFirst()返回此列表的第一个元素
(获取)getLast()返回此列表中的最后一个元素
(弹出栈结构)pollFirst()检索并删除此列表的第一个元素,如果此列表为空,则返回null
(弹出栈结构)pollLast()检索并删除此列表的最后一个元素,如果此列表为空,则返回null
(压入)void push(E e)将元素推送到此列表所表示的堆栈中
(删除)removeFirst()从此列表中删除并返回第一个元素
(删除)removeLast()从此列表中删除并返回最后一个元素

示例代码

   public static void main(String[] args) {
        //添加
        //void addFirst(E e)在此列表的开头插入指定的元素
        //void addLast(E e)将指定的元素追加到此列表的末尾
        LinkedList<String> list=new LinkedList<>();
        list.addFirst("十二路谭腿");
        list.addFirst("洪家铁线拳");
        list.addFirst("五郎八卦棍");
        list.addFirst("太极拳");
        list.addFirst("狮吼功");
        list.addFirst("蛤蟆功");
        list.addLast("如来神掌");
        System.out.println(list);
        System.out.println(list.size());
        //获取
        //E getFirst()返回此列表的第一个元素
        //E getLast()返回此列表中的最后一个元素。
        System.out.println(list.getFirst());
        System.out.println(list.getLast());
        System.out.println("-----------------");
        //弹出栈结构
        //E pollFirst()检索并删除此列表的第一个元素,如果此列表为空,则返回null;
        //E pollLast()检索并删除此列表的最后个元素,如果此列表为空,则返回null;
        System.out.println(list.pollFirst());
        System.out.println(list.pollFirst());
        System.out.println(list.pollLast());
        System.out.println(list);
        //push 压入
        //void push(E e)将元素推送到此列表所表示的堆栈中
        list.push("六指琴魔");
        System.out.println(list);
        //删除
        //E removeFirst() 从此列表中删除并返回第一个元素
        //E removeLast() 从此列表中删除并返回最后一个元素
        String  hh=list.removeFirst();
        System.out.println(hh);
        String ty=list.removeLast();
        System.out.println(ty);
        System.out.println(list);
    }

HashMap散列表

  • 它存储的内容是键值对映射
  • 它实现了Map接口,根据HashCode值存储数据,具有很快的访问速度,最多允许一条记录的键为null,不支持线程同步,其次HashMap是无序的,既不会记录插入的顺序

HashMap散列表的常见使用

常见方法
public V put (K key,V value)把指定的键与指定的值添加到map集合中
public  V remove (Object key)把指定的键所对应的键值对元素在map集合中删除,返回被删除元素的值
public  V get (Object key)根据指定的键,在Map集合中获取对应的值
public Set<K> keySet()获取Map集合中所有的键,存储到Set集合中
public Set<Map.Entry<K,V>> enteySet()获取到Map集合中所有的键值对对象的集合
public  boolean containKey(Object key)判断该集合中是否有此键

示例代码:

 public static void main(String[] args) {
        HashMap<String,String> map=new HashMap<>();
        //public V put(K key, V value) : 把指定的键与指定的值添加到Map集合中。
        map.put("aa","打工豹");
        map.put("bb","野猪蓬蓬");
        map.put("cc","鬣狗");
        map.put("dd","三嫂");
        System.out.println(map);
        //public V remove(Object key) : 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的值。
        System.out.println(map.remove("bb"));
        System.out.println(map);
        //public V get(Object key) 根据指定的键,在Map集合中获取对应的值。
        System.out.println(map.get("aa"));
        System.out.println(map.get("cc"));
        //public Set<K> keySet() : 获取Map集合中所有的键,存储到Set集合中。
        Set<String> keys=map.keySet();
        System.out.println(keys);
        //public Set<Map.Entry<K,V>> entrySet() : 获取到Map集合中所有的键值对对象的集合(Set集合)。
        //public boolean containKey(Object key) :判断该集合中是否有此键。
    }
map的遍历

示例代码:

 public static void main(String[] args) {
        //方式1:键找值方式
        System.out.println("---------方式1:键找值方式-----------");
        HashMap<String,String> map=new HashMap<>();
        map.put("白小纯","候小妹");
        map.put("罗峰","许昕");
        map.put("许青","紫玄");
        map.put("楚梁","姜月白");
        Set<String> hs=map.keySet();
        for(String key:hs){
            String value=map.get(key);
            System.out.println(key+"---"+value);
        }
        //方式2:键值对方式
        System.out.println("---------方式2:键值对方式------------");
       HashMap<String,String> map1=new HashMap<>();
       map1.put("唐三","小舞");
       map1.put("戴沐白","朱竹清");
       map1.put("奥斯卡","宁荣荣");
       map1.put("马红俊","白沉香");
       Set<Map.Entry<String,String>> entries=map1.entrySet();
        for (Map.Entry<String,String> entry:entries) {
            String key1= entry.getKey();
            String value1 =entry.getValue();
            System.out.println(key1+"---"+value1);
        }
        //方式3:lambda表达式方式
        System.out.println("---------方式3:lambda表达式方式------------");
        HashMap<String,String> map2=new HashMap<>();
        map2.put("阿星","如来神掌");
        map2.put("苦力强","十二路谭腿");
        map2.put("早餐铺老板","五郎八卦棍");
        map2.put("洋衣店裁缝","洪家铁线拳");
        //利用匿名内部类来遍历集合
        map2.forEach(new BiConsumer<String, String>() {
            @Override
            public void accept(String key2, String value2) {
                System.out.println(key2+"---"+value2);
            }
        });
        //利用lambda表达式来遍历集合
        map2.forEach((String key2,String value2)->{
            System.out.println(key2+"---"+value2);
        });
        //简化lambda表达式来遍历集合
        map2.forEach((key2,value2)-> System.out.println(key2+"---"+value2));
    }

总结

ArrayList集合、Iterator 迭代器、LinkedList 链表、HashMap散列表中所展示的方法只是较为常见的,如果遇到特殊情况,还需到它指定的API中查找对应的方法

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值