Java的三大集合即:Set、List、Map。

  • Set:代表无序、不可重复的集合,常用的有HashSet(哈希表实现)、TreeSet(红黑树实现);
  • List:代表有序、可以重复的集合,比较常用的有ArrayList(数组实现)、LinkedList(链表实现);
  • Map:代表具有映射关系的集合,常用的有HashMap(哈希表实现)、TreeMap(红黑树实现);

Java5以后又增加了Queue体系集合,代表一种队列集合实现,这里先不介绍。

List的实现类原理比较简单,Map比较复杂,而Set其实是基于Map的一种实现。

下面从各个集合的基本操作介绍一下,分别选取HashSet、ArrayList、HashMap三个典型的实现类:

1. HashSet

/**
* HashSet的增删遍历
* @author wangjun
* @email scuwangjun@hotmail.com
* @time 2018年4月6日 下午2:40:33
*/
public class HashSetOperation { public static void main(String[] args) {
//初始化
HashSet<String> set = new HashSet<>();
//增
set.add("key1");
set.add("key2");
set.add("key3");
//删
set.remove("key1");
//遍历1
//使用set.descendingIterator()方法可以反向遍历
System.out.println("HashSet遍历1,使用Iterator:");
Iterator<String> it = set.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
//遍历2
System.out.println("HashSet遍历2,使用for:");
for(String str: set) {
System.out.println(str);
}
}

运行结果:

HashSet遍历1,使用Iterator:
key2
key3
HashSet遍历2,使用for:
key2
key3

2.ArrayList

/**
* ArrayList的增删查改,遍历
* @author wangjun
* @email scuwangjun@hotmail.com
* @time 2018年4月6日 下午2:25:43
*/
public class ArrayListOperation { public static void main(String[] args) {
//初始化
List<String> list = new ArrayList<>();
//增
list.add("str1");
list.add("str2");
list.add("str3");
//删
list.remove(1);
//查
System.out.println("list的第二个元素是:" + list.get(1));
//改
list.set(0, "str11");
System.out.println("最终的list:" + list.toString());
//遍历1,使用for
System.out.println("LinkedList遍历1,使用for:");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
//遍历2,使用增强for
System.out.println("LinkedList遍历1,使用增强for:");
for(String str: list) {
System.out.println(str);
}
//遍历3,使用Iterator,集合类的通用遍历方式
System.out.println("LinkedList遍历3,使用Iterator:");
Iterator<String> it = list.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
} }

运行结果:

list的第二个元素是:str3
最终的list:[str11, str3]
LinkedList遍历1,使用for:
str11
str3
LinkedList遍历1,使用增强for:
str11
str3
LinkedList遍历3,使用Iterator:
str11
str3

3.HashMap

/**
* hashMap的增删查改
* 无序
* key相当于set,不可重复
* value相当于list,可重复
* @author wangjun
* @email scuwangjun@hotmail.com
* @time 2018年4月6日 下午2:30:31
*/
public class HashMapOperation { public static void main(String[] args) {
//初始化
HashMap<String,String> map = new HashMap<>();
//增
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");
//删
map.remove("key2");
//查
System.out.println("key1对应的valve为:" + map.get("key1"));
//改
map.replace("key3", "value33");
System.out.println("最终的map是:" + map.toString());
//遍历1,取出map中所有的key组成一个set
System.out.println("HashMap遍历1,取出map中所有的key组成一个set:");
for(String key: map.keySet()) {
System.out.println("key:" + key + ",value:" + map.get(key));
}
//遍历2,取出key组成set后,通过Iterator遍历key
System.out.println("HashMap遍历2,取出key组成set后,通过Iterator遍历key:");
Iterator<String> it = map.keySet().iterator();
while(it.hasNext()) {
String key = it.next();
String value = map.get(key);
System.out.println("key:" + key + ",value:" + value);
}
//遍历3,取出map中实际存储的数据结构--Map.Entry,在HashMap中使用的是Node静态内部类
//推荐这种,尤其是数据很大时
System.out.println("HashMap遍历3,通过Map.Entry:");
Set<Map.Entry<String, String>> entry = map.entrySet();
for(Map.Entry<String, String> entryItem: entry) {
String key = entryItem.getKey();
String value = entryItem.getValue();
System.out.println("key:" + key + ",value:" + value);
}
//遍历4,只能遍历value,不能遍历key,相当于取出map中左右的value组成一个list
System.out.println("HashMap遍历4,只遍历value:");
for(String value: map.values()) {
System.out.println("value:" + value);
}
} }

运行结果:

key1对应的valve为:value1
最终的map是:{key1=value1, key3=value33}
HashMap遍历1,取出map中所有的key组成一个set:
key:key1,value:value1
key:key3,value:value33
HashMap遍历2,取出key组成set后,通过Iterator遍历key:
key:key1,value:value1
key:key3,value:value33
HashMap遍历3,通过Map.Entry:
key:key1,value:value1
key:key3,value:value33
HashMap遍历4,只遍历value:
value:value1
value:value33

可以看到:

遍历Set一般常用2种方式;

遍历List一般常用3种方式;

遍历Map一般常用4种方式;

根据使用场景,选择合适的遍历方式。

List&Map&Set的操作和遍历的更多相关文章

  1. 003-Tuple、Array、Map与文件操作入门实战

    003-Tuple.Array.Map与文件操作入门实战 Tuple 各个元素可以类型不同 注意索引的方式 下标从1开始 灵活 Array 注意for循环的until用法 数组的索引方式 上面的for ...

  2. Guava中这些Map的骚操作,让我的代码量减少了50%

    原创:微信公众号 码农参上,欢迎分享,转载请保留出处. Guava是google公司开发的一款Java类库扩展工具包,内含了丰富的API,涵盖了集合.缓存.并发.I/O等多个方面.使用这些API一方面 ...

  3. vector 与map的下标操作

    1.vector的下标操作不会添加元素,只能针对已经存在的元素操作. 2.map的下标操作具有副作用,key不存在,会在map中添加一个具有该key的新元素,新元素的value使用默认构造方法. 3. ...

  4. java中集合的增删改操作及遍历总结

      集合的增删改操作及遍历总结

  5. Java map 详解 - 用法、遍历、排序、常用API等

    尊重原创: http://www.cnblogs.com/lzq198754/p/5780165.html 概要: java.util 中的集合类包含 Java 中某些最常用的类.最常用的集合类是 L ...

  6. Map的常用操作

    public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map. ...

  7. Map集合的几种遍历方式

    Map<String ,String> map=new HashMap<String,String>(); map.put("1","value1 ...

  8. golang在多个go routine中进行map或者slice操作应该注意的对象。

    因为golang的map和列表切片都是引用类型,且非线程安全的,所以在多个go routine中进行读写操作的时候,会产生“map read and map write“的panic错误. 某一些类型 ...

  9. pandas-05 map和replace操作

    # pandas-05 map和replace操作 map可以做一个映射,对于操作大型的dataframe来说就非常方便了,而且也不容易出错.replace的作用是替换,这个很好理解. import ...

随机推荐

  1. FastJson的常用操作

    FastJson的常用操作 2017-06-05 常用操作包括以下内容: 对象与(JsonObject或JsonArray)与String的互换 String转换为(JsonObject或JsonAr ...

  2. 从 shell 眼中看世界

    (字符) 展开每一次你输入一个命令,然后按下 enter 键,在 bash 执行你的命令之前, bash 会对输入的字符完成几个步骤处理.我们已经知道两三个案例,怎样一个简单的字符序列,例如 “*”, ...

  3. jQuery 学习笔记1 弹出一个对话框

    这里推荐使用sublime text 2来写,外加zen coding. 首先是写html 只需要html:xt,然后tab就可以得到一个html的完整结构. <!DOCTYPE html PU ...

  4. 问题-MethodAddress返回NIL?MethodAddress与published的关系?

    问题现象:有位朋友(397085381)在Q群里问“为什么书上的可以访问,而自己写的代码访问时为nil” 问题原因:因为要用“Self.MethodAddress('Test')”访问,方法必须放在“ ...

  5. iOS同步后couldn't load project

    使用Cornerstone同步后,有时候出现下面的现象,点击运行,提示“couldn't load project” 解决方法: 1.鼠标右键点击工程“XX_Internal”,选择“show in ...

  6. NLP实现文本分词+在线词云实现工具

    实现文本分词+在线词云实现工具 词云是NLP中比较简单而且效果较好的一种表达方式,说到可视化,R语言当仍不让,可见R语言︱文本挖掘——词云wordcloud2包 当然用代码写词云还是比较费劲的,网上也 ...

  7. 机器学习集成算法--- 朴素贝叶斯,k-近邻算法,决策树,支持向量机(SVM),Logistic回归

    朴素贝叶斯: 是使用概率论来分类的算法.其中朴素:各特征条件独立:贝叶斯:根据贝叶斯定理.这里,只要分别估计出,特征 Χi 在每一类的条件概率就可以了.类别 y 的先验概率可以通过训练集算出 k-近邻 ...

  8. rsa.FromXmlString 系统找不到指定的文件

    rsa做加密解密的时候,发布到IIS7 Windows2008上出现异常,提示rsa.FromXmlString找不到指定的文件. 原因是系统安全性问题,做了变更,修改为如下代码即可: System. ...

  9. jsp标准动作

    JSP标准动作元素的使用格式为:<jsp:标记名>,它採用严格的xml标签语法来表示.这些jsp标签动作元素是在用户请求阶段运行的,这些标准动作元素是内置在jsp文件里的,所以能够直接使用 ...

  10. Spring Cloud Sleuth Zipkin - (1)

    最近在学习spring cloud构建微服务,很多大牛都提供很多入门的例子帮助我们学习,对于我们这种英语不好的码农来说,效率着实提高不少.这两天学习到追踪微服务rest服务调用链路的问题,接触到zip ...