一段代码搞懂关于Java中List、Set集合及Map的使用

 更新时间:2016年08月05日 14:31:15   作者:我不看我不看  
这篇文章主要介绍了关于Java中List、Set集合及Map的使用及list,set和map三者的区别介绍,非常不错,具有参考借鉴价值,需要的朋友可以参考下

Java中List、Set集合及Map的使用代码如下所示:

package tingjizifu;
import java.util.*;
public class TongJi {
/*
* 使用Scanner从控制台读取一个字符串,统计字符串中每个字符出现的次数,要求使用学习过的知识完成以上要求
* 实现思路根据Set、List、Map集合的特性完成。
*/
public static void main(String[] args) {
// 输入字符串
Scanner input = new Scanner(System.in);
String shuRu = input.next();
// 把字符串字符装入List集合
List<String> list = new ArrayList<String>();
for (int i = 0; i < shuRu.length(); i++) {
list.add(String.valueOf(shuRu.charAt(i)));
}
// 把字符串字符装入Set集合
Set<String> set = new HashSet<String>();
for (int i = 0; i < shuRu.length(); i++) {
set.add(String.valueOf(shuRu.charAt(i)));
}
// 用Set中的字符与List中的字符进行比较,相同就加1进行计数,
// 然后把Set集合中的字符作为键(key),统计的数作为值(value),最后打印出Map中的数据
Map<String, Integer> map = new HashMap<String, Integer>();
for (String str : set) {
int sum = 0;
// System.out.println(str);
for (int i = 0; i < list.size(); i++) {
if (list.get(i).equals(str)) {
sum++;
}
}
map.put(str, sum);
}
Set<String> ss = map.keySet();
for (String str : ss) {
System.out.println(str + "出现次数为" + map.get(str) + "次");
}
input.close();
}
}

下面看下set map list的区别 

都是集合接口

  set --其中的值不允许重复,无序的数据结构
  list   --其中的值允许重复,因为其为有序的数据结构
  map--成对的数据结构,健值必须具有唯一性(键不能同,否则值替换) 

List 按对象进入的顺序保存对象,不做排序或编辑操作。

Set对每个对象只接受一次,并使用自己内部的排序方法(通常,你只关心某个元素是否属于Set,而不关心它的顺序--否则应该使用List)。

Map同样对每个元素保存一份,但这是基于"键"的,Map也有内置的排序,因而不关心元素添加的顺序。如果添加元素的顺序对你很重要,应该使用 LinkedHashSet或者LinkedHashMap.

Collection 是对象集合, Collection 有两个子接口 List 和 Set

List 可以通过下标 (1,2..) 来取得值,值可以重复

而 Set 只能通过游标来取值,并且值是不能重复的

ArrayList , Vector , LinkedList 是 List 的实现类

 ArrayList 是线程不安全的, Vector 是线程安全的,这两个类底层都是由数组实现的

 LinkedList 是线程不安全的,底层是由链表实现的  

Map 是键值对集合

HashTable 和 HashMap 是 Map 的实现类

HashTable 是线程安全的,不能存储 null 值

HashMap 不是线程安全的,可以存储 null 值

以上所述是小编给大家介绍的关于Java中List、Set集合及Map的使用知识,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • JavaSE-面向对象(方法重写)

    JavaSE-面向对象(方法重写)

    子类在调用父类的私有方法中不能直接调用,但是可以通过get方法进行调用,修改属性的值可以通过set方法进行修改。而子类想要修改父类中的方法可以使用方法重写进行操作。
    2021-08-08
  • java中构造器内部调用构造器实例详解

    java中构造器内部调用构造器实例详解

    在本篇文章里小编给大家分享的是关于java中构造器内部调用构造器实例内容,需要的朋友们可以学习下。
    2020-05-05
  • Java反射机制实例代码分享

    Java反射机制实例代码分享

    这篇文章主要介绍了Java反射机制实例代码分享,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • Java 设置Excel条件格式示例代码(高亮条件值、应用单元格值/公式/数据条等类型)

    Java 设置Excel条件格式示例代码(高亮条件值、应用单元格值/公式/数据条等类型)

    这篇文章主要介绍了Java 设置Excel条件格式示例代码(高亮条件值、应用单元格值/公式/数据条等类型),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • Java实现常用加密算法SM3的方式及测试代码

    Java实现常用加密算法SM3的方式及测试代码

    这篇文章介绍了SM3算法在Java中的实现方式,SM3算法是一种密码散列函数标准,主要用于商用密码应用中的数字签名和验证、消息认证码生成和验证、随机数生成等,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-10-10
  • 浅谈servlet3异步原理与实践

    浅谈servlet3异步原理与实践

    本篇文章主要介绍了servlet3异步原理与实践,详细的介绍了servlet和异步的流程使用,具有一定的参考价值,有兴趣的可以了解一下
    2017-10-10
  • Java SpringMVC实现PC端网页微信扫码支付(完整版)

    Java SpringMVC实现PC端网页微信扫码支付(完整版)

    这篇文章主要介绍了Java SpringMVC实现PC端网页微信扫码支付(完整版)的相关资料,非常不错具有一定的参考借鉴价值,需要的朋友可以参考下
    2016-11-11
  • 基于idea解决springweb项目的Java文件无法执行问题

    基于idea解决springweb项目的Java文件无法执行问题

    这篇文章给大家介绍了基于idea解决springweb项目的Java文件无法执行问题,文中通过图文结合的方式给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-02-02
  • JAVA并发中VOLATILE关键字的神奇之处详解

    JAVA并发中VOLATILE关键字的神奇之处详解

    这篇文章主要给大家介绍了关于JAVA并发中VOLATILE关键字的神奇之处的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • 深度解析SpringBoot中@Async引起的循环依赖

    深度解析SpringBoot中@Async引起的循环依赖

    本文主要介绍了深度解析SpringBoot中@Async引起的循环依赖,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02

最新评论