package com.amaker.file;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
public class Collection {
/**
* 集合学习Demo
*/
public static void main(String[] args) {
//
}
/**
* 类集:类集就是一系列的动态对象数组。
* 类集中最大的几个操作接口:Collection、Map、Iterator
* 所有的类集操作的接口或类都在java.util包中。
* List接口:ArrayList(95%)、Vector(4%)、LinkedList(1%)
* Vector类和ArrayList类的区别:
* No. 区别点 ArrayList Vector
* 1 时间 是新的类,是在JDK 1.2之后推出的 是旧的类是在JDK 1.0的时候就定义的
* 2 性能 性能较高,是采用了异步处理 性能较低,是采用了同步处理
* 3 输出 支持Iterator、ListIterator输出 除了支持Iterator、ListIterator输出,还支持Enumeration输出
*
*/
public void demo1(){
List<String> all = new ArrayList<String>(); // 实例化List对象,并指定泛型类型
all.add("hello "); // 增加内容,此方法从Collection接口继承而来
all.add(0, "VINCE ");// 增加内容,此方法是List接口单独定义的
all.add("world"); // 增加内容,此方法从Collection接口继承而来
System.out.println(all); // 打印all对象调用toString()方法
}
/**
* Set接口:
* Set接口也是Collection的子接口,与List接口最大的不同在于,Set接口里面的内容是不允许重复的
* 此接口中有两个常用的子类:HashSet、TreeSet
* HashSet属于散列的存放类集,里面的内容是无序存放的
* 使用HashSet实例化的Set接口实例,本身属于无序的存放。
*/
public void demo2(){
Set<String> all = new HashSet<String>(); // 实例化Set接口对象
all.add("A");
all.add("B");
all.add("C");
all.add("D");
all.add("E");
System.out.println(all);
}
public void demo3(){
Set<String> all = new HashSet<String>(); // 实例化Set接口对象
all.add("A");
all.add("B");
all.add("C");
all.add("D");
all.add("E");
String[] str = all.toArray(new String[] {});// 变为指定的泛型类型数组
for (int x = 0; x < str.length; x++) {
System.out.print(str[x] + "、");
}
}
/**
* 排序的子类:TreeSet:
* 与HashSet不同的是,TreeSet本身属于排序的子类
*/
public void demo4(){
Set<String> all = new TreeSet<String>(); // 实例化Set接口对象\
all.add("D");
all.add("X");
all.add("A");
System.out.println(all);
}
/**
* 判断两个对象是否相等:
* 第一种判断两个对象的编码是否一致,这个方法需要通过hashCode()完成,即:每个对象有唯一的编码
* 还需要进一步验证对象中的每个属性是否相等,需要通过equals()完成。
* 关于TreeSet的排序实现,如果是集合中对象是自定义的或者说其他系统定义的类没有实现
* Comparable接口,则不能实现TreeSet的排序,会报类型转换(转向Comparable接口)错误。
* 换句话说要添加到TreeSet集合中的对象的类型必须实现了Comparable接口.
*/
/**
* 集合输出:
* 只要是碰到了集合,则输出的时候想都不想就使用Iterator进行输出。
* Iterator
*/
public void demo5(){
List<String> all = new ArrayList<String>();
all.add("A");
all.add("B");
all.add("C");
all.add("D");
all.add("E");
Iterator<String> iter = all.iterator();
while (iter.hasNext()) {// 判断是否有下一个元素
String str = iter.next(); // 取出当前元素
System.out.print(str + "、");
}
}
/**
* Map接口:
* Map本身是一个接口,所以一般会使用以下的几个子类:HashMap、TreeMap、Hashtable
* Map接口在开发中最基本的操作过程,根据指定的key找到内容,如果没有找到,则返回null,找到了则返回具体的内容。
* HashMap本身是属于无序存放的。
* Hashtable中是不能向集合中插入null值
* HashMap与Hashtable的区别:
* No. 区别点 HashMap Hastable
* 1 推出时间 JDK 1.2之后推出的,新的操作类 JDK 1.0时推出的,旧的操作类
* 2 性能 异步处理,性能较高 同步处理,性能较低
* 3 null 允许设置为null 不允许设置,否则将出现空指向异常
*/
public void demo6(){
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(1, "张三A");
map.put(1, "张三B"); // 新的内容替换掉旧的内容
map.put(2, "李四");
map.put(3, "王五");
String val = map.get(6);
System.out.println(val);
}
public void demo7(){
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(1, "张三A");
map.put(2, "李四");
map.put(3, "王五");
Set<Integer> set = map.keySet(); // 得到全部的key
List<String> value = (List<String>) map.values(); // 得到全部的value
Iterator<Integer> iter1 = set.iterator();
Iterator<String> iter2 = value.iterator();
System.out.print("全部的key:");
while (iter1.hasNext()) {
System.out.print(iter1.next() + "、");
}
System.out.print("\n全部的value:");
while (iter2.hasNext()) {
System.out.print(iter2.next() + "、");
}
}
//Map集合中每一个元素都是Map.Entry的实例,只有通过Map.Entry才能进行key和value的分离操作。
public void demo8(){
Map<String, String> map = new HashMap<String, String>();
map.put("ZS", "张三");
map.put("LS", "李四");
map.put("WW", "王五");
map.put("ZL", "赵六");
map.put("SQ", "孙七");
Set<Map.Entry<String, String>> set = map.entrySet();// 变为Set实例
Iterator<Map.Entry<String, String>> iter = set.iterator();
while (iter.hasNext()) {
Map.Entry<String, String> me = iter.next();
System.out.println(me.getKey() + " --> " + me.getValue());
}
}
//在JDK 1.5之后也可以使用foreach完成同样的输出,只是这样的操作基本上不使用。
public void demo9(){
Map<String, String> map = new HashMap<String, String>();
map.put("ZS", "张三");
map.put("LS", "李四");
map.put("WW", "王五");
map.put("ZL", "赵六");
map.put("SQ", "孙七");
for (Map.Entry<String, String> me : map.entrySet()) {
System.out.println(me.getKey() + " --> " + me.getValue());
}
}
/**
* 当一个对象被存进HashSet集合后,就不能修改这个对象中的那些参与计算的哈希值的字段了,否则,对象被修改后的哈
* 希值与最初存储进HashSet集合中时的哈希值就不同了,在这种情况下,即使在contains方法使用该对象的当前引用作为
* 的参数去HashSet集合中检索对象,也将返回找不到对象的结果,这也会导致无法从HashSet集合中删除当前对象,从而
* 造成内存泄露。
*
*/
/**
* foreach输出
*/
public static void demo10(){
String [] strs = {"a","b","c","d","e"};
for(String s:strs){
System.out.print(s+"、");
}
}
}
分享到:
相关推荐
本示例主要探讨的是Java集合类的简单使用,通过一个名为`CollectionsTest.java`的文件进行演示。这篇博客文章可能详细解释了如何创建、操作和理解Java集合类的基本概念。 首先,Java集合框架主要包括接口和实现这些...
【Java学习Demo】完全由个人原创,旨在记录和分享作者在学习Java编程语言时的实践成果。这个压缩包包含了作者在探索Java基础知识、面试准备过程中编写的示例代码,是学习和理解Java语法、概念及常见问题的良好参考...
在描述中提到,"通过认真看这个文件的例子,有利于java初学者进行Java的简单学习,入门看demo,熟悉Java编程。"这意味着这个压缩包中的内容特别适合那些刚刚接触Java的人,他们可以通过这些例子了解如何编写、组织和...
【标题】"java demo 学习时候敲的" 涉及的知识点: 这个标题表明这是一个关于Java编程的示例代码集合,主要用于学习Java技术,特别是JavaEE(Java Enterprise Edition)的一部分。JavaEE是用于构建企业级应用的平台...
Apache Commons Collection是集合框架的扩展,包含了许多对Java集合接口的增强实现,比如`BidiMap`(双向映射)和`MultiMap`(多值映射),这些都是Java标准库中没有的功能。 最后,Apache HttpClient是一个功能...
本篇将通过一个简单的Java调用Redis的Demo来探讨如何在Java应用中操作Redis。 首先,我们需要在项目中引入Jedis库,这是一个Java客户端,用于连接和操作Redis。你可以通过Maven或Gradle在你的构建文件中添加依赖。...
总的来说,大华SDK提供了全面的接口和支持,使得开发者能够轻松地集成大华设备的功能到自己的应用程序中,无论是简单的视频展示还是复杂的智能分析,都能在Java环境下得到实现。通过深入学习和实践,开发者可以充分...
这个【JAVA经典小程序demo】压缩包很可能是为了帮助学习者通过实际例子来理解和应用上述概念。每个示例可能涵盖了一个或多个知识点,通过阅读和运行这些程序,可以加深对Java编程的理解,提升编程技能。
在Java编程世界里,"Java源代码小Demo"是一份宝贵的学习资源,它包含了多个精心设计的小型示例项目,旨在帮助初学者快速理解和掌握Java编程的基础知识。这些示例通常涵盖了一些基本概念、语法结构以及常用API的使用...
这个官方Demo包含了一系列示例代码,旨在帮助开发者更好地理解和利用Java 8的新特性。以下是其中的一些关键知识点: 1. **Lambda表达式**:Java 8最大的亮点之一就是引入了Lambda表达式,它简化了函数式编程,使得...
这个"Java音乐播放简单demo"是一个基础的音乐播放程序,具备播放和暂停功能,同时支持添加歌曲到播放列表。让我们深入探讨这个项目涉及的关键知识点。 首先,我们要用到Java的`javax.sound.sampled`包,这是Java...
"java-se-demo"可能包含创建简单类的示例,以及如何通过对象进行交互的练习。 接着,文件I/O操作在实际项目中十分常见。Java提供了丰富的API来处理文件读写,包括File类、InputStream/OutputStream接口及其子类。...
这个"Java-redis-demo"项目可能包含了上述部分或全部知识点的实现,通过`TestRedis`类的代码,你可以学习到如何在实际项目中运用Java与Redis的交互。记得根据具体需求和场景来调整配置和使用方法,以达到最佳效果。
总的来说,“java8lambda表达式Demo”提供了一个很好的学习资源,帮助开发者理解如何在Android环境中有效地利用Java 8的Lambda表达式。通过研究这个Demo,你可以深入了解Lambda表达式如何简化代码,提高生产力,并为...
通过"大华视频 最新java后台程序开发demo"的压缩包,我们可以学习和理解如何在实际项目中应用这些技术,以及大华公司在视频处理领域的特定实现。这些示例代码和教程对于提升Java后台开发技能,尤其是处理视频数据的...
本篇将详细介绍如何使用Java连接MongoDB,以及进行基本的数据操作:创建集合、添加文档、修改文档、查询文档和删除文档。 首先,为了连接MongoDB,我们需要引入MongoDB的Java驱动程序依赖。在Maven项目中,可以在...
此外,如果你需要将Java集合(如List或Map)转换为JSON,JSON-LIB也提供了相应的方法。例如,将一个List转换为JSON数组: ```java List<Person> people = new ArrayList(); people.add(person); JSONArray ...
在本资源"Java 界面组件案例集合 众多DEMO"中,你将找到一系列适用于新手和有经验的开发者学习和实践的Java Swing GUI示例。这些DEMO涵盖了Java界面开发的基础到高级应用,可以帮助你快速理解和掌握Swing组件的用法...
在"JavaDemo.txt"中,开发者可能通过编写简单的实例来解释这些概念,以便学习者能更好地理解和掌握。通过分析和运行这些代码,学习者可以逐步提高自己的编程技能,从而在实际工作中灵活运用Java解决各种问题。同时,...
7. **集合框架**:Java集合框架包括List、Set、Queue、Map等接口及其实现类,DEMO将展示如何使用ArrayList、LinkedList、HashSet、HashMap等数据结构进行数据存储和操作。 8. **网络编程**:Java提供了Socket编程...