Java常用集合——List集合、Set集合、Map集合
List集合
先列举一下List集合的几个特点,再依次分析:
- 长度可变
- 可以存放不同数据类型
- 有索引
- 通过下标索引来获取数据
- 集合中的元素是有序的
- 可以有重复的元素
我们首先创建一个变量list:List list=new ArrayList();
这里的List要选择后缀名java.util的那一个选项。
其实它刚打出来是这样的List<E> list=new ArrayList<E>();
这个是可以删掉不写的,里面是泛型,后面再说。
往集合里放一些数据,我们可以用add();方法:list.add(123456);
也可以放入list.add("ABC");
这里体现了List集合的长度可变和可以存放不同数据类型的特点。
我们想获取这些数据怎么办呢,有一个专门的方法可以获取——get();
System.out.println(list.get(0));System.out.println(list.get(1));
这样就获取了刚刚放入的数据啦。(第一个数据的下标是0,第二个数据是1,以此类推)
这儿能够获取就是因为list集合有索引,并且是通过下标索引来获取数据的。我们来看一下输出结果:
这里只有两组数据,论据并不是很充分,可以多加几组,但是无论加多少组,你都会发现它的输出顺序是按着add的顺序来的,所以集合中的元素是有序的。
这时候,我们再add一个相同的数据
List list=new ArrayList();list.add(123456);list.add("ABC");list.add(123456);System.out.println(list.get(0));System.out.println(list.get(1));System.out.println(list.get(2));
输出结果:
这里我们看出list集合是可以有重复的元素,这一点和数学中的集合不同。
想要删除数据,使用remove方法,同样也是用下标索引删除数据。
如果我们想获得这个集合的长度,也有个直接的方法——get(); System.out.println(list.size());
这样,即可获得。
如果想遍历数组,可以这样写:
for (int i = 0; i < list.length; i++) { System.out.println(list.get(i));}
链表集合
创建变量的公式:List<String> linklist=new LinkedList<String>();
这里我们在<>写了String,这意味着我们指定了数据类型,只能放String类型,不能放其他数据类型了,这里叫泛型。
链表集合的添加和获取与List集合一样都是add和get方法,不再赘述。
但这里的遍历不仅可以用for循环,还可以用for-each循环:
for (String string : linklist) { System.out.println(string);}
但是上面的List集合不能用for-each遍历,因为没有泛型,数据类型不统一。
Set集合
- 没有索引
- 不允许有重复元素
- 元素无序
- 允许有null值
Set集合我们用的最多的是HashSet:Set<String> set=new HashSet<String>();
set集合的添加、删除同样也是add和remove方法,但是因为Set没有索引,我们获取的时候是找不到get方法的。
所以Set集合的输出可以直接输出:System.out.println(set);
也可以用for-each循环:
for (String string : set) { System.out.println(string);}
输出会发现,结果的顺序并不是按照add的顺序来的,所以set集合的元素是无序的。
如果我们set.add(null);
这个是允许的。
TreeSet
- 有序集合,元素自然排列
- 不允许有null值
- 不允许有重复元素
TreeSet也是常用的:Set<String> treeSet=new TreeSet<String>();
获取数据的方法依旧是add。
与Set的不同点是,TreeSet想要遍历,必须使用迭代器
具体代码如下:
Set<String> treeSet=new TreeSet<String>();treeSet.add("abcd");treeSet.add("1234");Iterator<String> it=treeSet.iterator();//这里的范型也得是Stringwhile(it.hasNext()) { System.out.println(it.next()); //使用while循环
Map集合
这是我们用的最多的集合。
其特点是:
- key不能重复,如果重复,value的值会被覆盖
- key和value都可以为null
- 无序存储
使用HashMap:Map<String, String> map=new HashMap<String, String>();
Map集合的最大特点就是它是键值对来表示,键(key)、值(value)可相同也可不同。
添加数据用到的不是add方法了,而是put方法:
map.put("1", "南京");map.put("2", "上海");
可以通过key来获取数据:System.out.println(map.get("2"));
这时候我们得到的是“上海”。
删除也可以用key来进行:map.remove("2");
如果在key和value的位置上都写上null,也是可以的。
遍历——只遍历value
Iterator<String>it=map.values().iterator();while (it.hasNext()) { System.out.println(it.next());}
遍历——遍历key和value
方法一:
for (String string : map.keySet()) { System.out.println(string+":"+map.get(string));}
方法二:
for (Entry<String, String>entry : map.entrySet()) { String key=entry.getKey(); String value=entry.getValue(); System.out.println(key+":"+value);}
HashTable
创建一个新变量:Map<String, String> table=new Hashtable<String, String>();
放入数据和Map集合一样用put方法。
遍历:
for (String string : table.keySet()) { System.out.println(string+":"+table.get(string));}
HashTable与Map集合的不同点就是HashMap的key和value都不允许有null值。
啊终于敲完了!
作者:一颗坏蛋
来源链接:https://blog.csdn.net/qq_45879084/article/details/105083756
版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。
2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。