集合
|-------Collection接口:单列集合,用来存储一个一个的对象。
|-----List接口:存储有序的,可重复的数据
|-----ArrayList、LinkedList(链表结构)、Vector(几乎不使用)
|-----Set接口:存储无序的,不可重复的数据
|-----HashSet:主要实现类,线程不安全的,可以存储null值。
|-----LinkedHashSet:作为HashSet子类,使得遍历其内部数据时,可以按照添加的顺序去遍历
|-----TreeSet:底层使用二叉树(红黑树)存储,可以按照添加对象的指定属性进行排序
|--------Map:双列集合,用来存储一对(key--value)一对的数据
|----HashMap、LinkedHashMap、TreeMap、HashTable、Properties
List常用方法
1 2 3 4 5 6 7 8 | void add( int index,Object ele):在index位置插入ele元素 boolean addAll( int index,Collection eles):从index位置开始将eles中的所有元素添加进来 Object get( int index):获取指定index位置的元素 int indexOf(Object obj):返回obj在集合中首次出现的位置,匹配不到返回- 1 int lastIndexOf(Object obj):返回obj在当前集合中末次出现的位置 Object remove( int index):移除指定index位置的元素,并返回此元素 Object set( int index,Object ele):设置指定index位置的元素为ele List subList( int fromIndex, int toIndex):返回从fromIndex到toIndex位置的子集合 |
HashSet
1.无序性:不等于随机性,存储的数据在底层数组中并非按照数组索引的顺序添加,而是根据数据的哈希值决定的。
2.不可重复性:保证添加的元素按照equals()判断时,不能返回true,相同的元素只能添加一个
在Set中添加的数据,其所在的类一定要重写hashCode()和equals(),重写hashCode()和equals()
Map
|--------Map:双列集合,用来存储一对(key--value)一对的数据
|----HashMap:Map的主要实现类,线程不安全的,效率高;可以存储null的key和value。
|----LinkedHashMap:保证在遍历map元素时,可以按照添加的顺序实现遍历。原因:在原有的HashMap底层结构基础上,添加了一对指针,指向前一个和后一个元素
|----TreeMap:保证按照添加的key--value对进行排序,实现排序遍历。此时考虑key自然排序和定制排序,底层使用红黑树
|----HashTable:线程安全的,效率低;不可以存储null的key和value。(很少使用)
|----Properties:常用来处理配置文件,key和value都是String类型
Map中的key:无序的,不可重复的,使用Set存储所有的key,key所在的类要重写equals()和hashCode()(以hashMap为例)
Map中的value:无序的,可重复的 ,使用Collection存储所有的value,value所在的类要重写equals()
一个键值对:key-value构成一个Entry对象
Map中的Entry:无序的,不可重复的,使用Set存储所有的Entry
Map接口常用方法
遍历方式一:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | @Test public void test2(){ Map map = new HashMap(); map.put( "a" , 111 ); map.put( "b" , 222 ); map.put( "c" , 333 ); map.put( "d" , 444 ); map.put( "e" , 555 ); map.put( "f" , 666 ); Set set = map.entrySet(); Iterator iterator = set.iterator(); while (iterator.hasNext()){ Map.Entry entry = (Map.Entry) iterator.next(); System.out.println(entry.getKey()+ ":" +entry.getValue()); } } |
方式二:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | @Test public void test2(){ Map map = new HashMap(); map.put( "a" , 111 ); map.put( "b" , 222 ); map.put( "c" , 333 ); map.put( "d" , 444 ); map.put( "e" , 555 ); map.put( "f" , 666 ); Set keySet = map.keySet(); Iterator iterator = keySet.iterator(); while (iterator.hasNext()){ Object key = iterator.next(); System.out.println(map.get(key)); } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2021-08-22 对象字面量的增强写法
2021-08-22 const的使用