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

阅读: 评论:0

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

对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.String(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.ains("3"));}
//运行结果:truepublic 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.ve(2));System.out.ve("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&#Array();System.out.println(objects);System.out.Array().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.()+" ");}}

这里首先集合获取迭代器使用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.First());System.out.Last());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&#veFirst();System.out.println(hh);String ty&#veLast();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.ve("bb"));System.out.println(map);//public V get(Object key) 根据指定的键,在Map集合中获取对应的值。System.out.("aa"));System.out.("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&#(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&#Set();for (Map.Entry<String,String> entry:entries) {String key1= Key();String value1 &#Value();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>() {@Overridepublic 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中查找对应的方法

本文发布于:2024-02-02 01:27:10,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170681286340519.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:链表   迭代   基础   列表   Iterator
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23