集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。今天我们主要学习了3中集合框架结构:即ArrayList,HashSet和HashMap.
1.List接口(即ArrayList)
List提供的是一个相对有序的集合,集合的长度可以自行改变,并且允许元素的重复
ArrayList特点:线性,有序,长度可变,有下标。
以下是ArrayList的实现及遍历
public static void main(String args[]) {
// 创建一个ArrayList对象
java.util.ArrayList<String> list = new java.util.ArrayList<String>();
// 装入10个数据
for (int i = 0; i < 10; i++) {
String s = "元素" + i;
list.add(s);
}
// 第一种遍历法:使用其本身的方法
for (int i = 0; i < list.size(); i++) {
// 根据下标取出元素并装入
String str = list.get(i);
System.out.print(str + "\t");
}
System.out.println();
// 第二种遍历法:使用迭代器
java.util.Iterator<String> iter = list.iterator();
// 判断是否有元素
while (iter.hasNext()) {
// 取出一个元素
String str = iter.next();
System.out.print(str + "\t");
}
System.out.println();
// 第三种遍历法:增强for型循环
for (String str : list) {
System.out.print(str + "\t");
}
}
2.Set接口(即HashSet)
Set接口提供的是一个无序的集合,他的对象不按特定的方式来排序,而仅仅是简单的将对象加入集合,所以它不允许重复对象的出现
HashSet特点:无序,长度可变,不可重复
以下是HashSet的实现及遍历
public static void main(String[] args) {
// 创建一个HashSet对象
java.util.HashSet<String> sets = new java.util.HashSet<String>();
// 装入10个数据
for (int i = 0; i < 10; i++) {
String s = "元素" + i;
sets.add(s);
}
//输入重复的元素,用于检验他的不可重复性,并用add()方法的返回值来观察是否装入了重复的元素
boolean b = sets.add("元素2");
boolean b1 = sets.add("元素10");
System.out.println(b + "<>" + b1);
//第一种遍历法:使用迭代器
java.util.Iterator<String> iter = sets.iterator();
while (iter.hasNext()) {
String str = iter.next();
System.out.print(str + "\t");
}
System.out.println();
// 第二种遍历法:增强for循环
for(String str:sets){
System.out.print(str+"\t");
}
}
3.Map接口(HashMap)
Map提供的是一个映射的对应关系的集合,由一对对键值对组成,其中key值不能重复,而value可以。且当输入的有相同的key时,会进行替换
HashMap特点:无序,key不可重复
以下是HashMap的实现及遍历
// 创建一个HashMap对象
java.util.HashMap<Integer, String> maps = new java.util.HashMap<Integer, String>();
// 装入一个键值对
for (int i = 0; i < 10; i++) {
int num = i;
String name = "学生" + i;
maps.put(num, name);
}
//增加一个键值对,加入K相同的键值对,则会替换已经存在的键值对
maps.put(10, "学生5");
maps.put(4, "新学生");
//遍历 方法:迭代器
//得到K的Set集合
java.util.Set<Integer> set = maps.keySet();
//遍历K的集合,得到set的迭代器
java.util.Iterator<Integer> iter = set.iterator();
while(iter.hasNext()){
//取出一个key
int num = iter.next();
//根据key得到对应的Value
String name = maps.get(num);
System.out.println(num+"\t"+name);
}
}
以下是关于用集合框架结构解决的小问题,分别是去重复排序和统计重复次数
1去重复排序的类
public class uniqueorder {
int i = 0;
int[] orderarray = new int[i];
//用于添加数组元素的方法
public void add(int a){
int[] addarray = new int[i+1];
for(int j=0;j<i;j++){
addarray[j]=orderarray[j];
}
addarray[i] = a;
orderarray = addarray;
i++;
}
//操作数组使其去重复并排序,并返回现有的数组大小
public int operate(){
int j=0;
//创建set对象(即去重复)
java.util.HashSet<Integer> hset = new java.util.HashSet<Integer>();
for(int a=0;a<i;a++){
hset.add(orderarray[a]);
}
//创建迭代器对象遍历(将去重复后的数组赋予orderarray)
java.util.Iterator<Integer> iter = hset.iterator();
while(iter.hasNext()){
int k = iter.next();
int[] iterarray = new int[j+1];
for(int a=0;a<j;a++){
iterarray[a]=orderarray[a];
}
iterarray[j] = k;
orderarray =iterarray;
j++;
}
//排序过程(冒泡法)
for(int a=0;a<j;a++){
for(int b=j-1;b>a;b--){
if(orderarray[b]<orderarray[b-1]){
int temp=orderarray[b-1];
orderarray[b-1]=orderarray[b];
orderarray[b]=temp;
}
}
}
return j;
}
//依照给出的下标弹出数组中元素的方法(从数组开始到数组末尾)
public int pop(int index){
int v=orderarray[index];
return v;
}
}
2统计重复字数的类
public class countrepeat {
int i = 0;
int[] orderarray = new int[i];
//用于添加数组元素的方法
public void add(int a){
int[] addarray = new int[i+1];
for(int j=0;j<i;j++){
addarray[j]=orderarray[j];
}
addarray[i] = a;
orderarray = addarray;
i++;
}
//操作数组统计重复的元素数并遍历显示
public void operate(){
//创建hashmap对象
java.util.HashMap<Integer, Integer> hmap = new java.util.HashMap<Integer, Integer>();
//创建set对象(即去重复)
java.util.HashSet<Integer> hset = new java.util.HashSet<Integer>();
for(int a=0;a<i;a++){
hset.add(orderarray[a]);
if(!hmap.containsKey(orderarray[a])){
hmap.put(orderarray[a], 1);
}else if(hmap.containsKey(orderarray[a])){
int v=hmap.get(orderarray[a])+1;
hmap.put(orderarray[a], v);
}
}
//创建迭代器对象遍历
java.util.Iterator<Integer> iter = hset.iterator();
while(iter.hasNext()){
int k = iter.next();
int v = hmap.get(k);
System.out.println(k+"\t"+v);
}
}
}
3测试类
public static void main(String[] args) {
//给予一个数组
int[] testarray = {2,34,5,25,1,34,5,76,37,9};
//创建对象
uniqueorder uo = new uniqueorder();
countrepeat cr = new countrepeat();
//将数组装入
for(int i=0;i<10;i++){
uo.add(testarray[i]);
cr.add(testarray[i]);
}
int k=uo.operate();
for(int i=0;i<k;i++){
System.out.print(uo.pop(i)+"\t");
}
System.out.println();
System.out.println("-----------------------");
cr.operate();
}
答案为
1 2 5 9 25 34 37 7
-----------------------
34 2
1 1
2 1
5 2
37 1
76 1
25 1
9 1
分享到:
相关推荐
本文将深入探讨 Java 集合框架,并详细分析 List、Set 和 Map 之间的区别及其应用场景。 Java 集合框架是 Java 程序设计中不可或缺的一部分,它提供了灵活、高效的方式来处理数据集合。List、Set 和 Map 作为集合...
深入的洞察到Java集合框架的核心组件:Map, List, 和 Set。首先,深入分析了HashMap的内部结构,包括它的数组+链表+红黑树的数据结构。重要的是理解如何处理并发问题,特别是在Java 8中对HashMap的优化,如高低位...
本文将深入探讨Java集合框架中的四个主要接口:Collection、List、Set和Map,以及它们的实现原理。 ### 集合框架概述 集合框架是Java API中用于存储和管理对象的统一框架。它为数据结构提供了抽象接口,使得程序员...
### Java集合框架的内部揭秘:List、Set与Map的深潜之旅 #### 一、List:有序序列的深度剖析 **List** 接口在Java集合框架中扮演着至关重要的角色,它是一种允许包含重复元素的有序集合。这种类型的集合非常适合...
Java集合Collection、List、Set、Map使用详解
Java基础知识汇总之集合框架List、Map、Set接口及其子类综合对比
本文将深入探讨Java集合框架的核心概念,包括List、Set、Map等接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类,帮助你理解和解决面试中的相关问题。 1. **List和Set的区别及应用场景** - **List** 是...
Collection接口是Java集合框架的根接口,定义了基本的集合操作,而List接口和Set接口继承自Collection接口,提供了有序和无序的集合操作。Map接口提供了键值对的存储和操作。 Java集合框架是Java语言中最基本也是最...
总结来说,Java集合框架为开发者提供了丰富的数据结构以应对不同场景的需要,从简单的List和Set到复杂的Map结构,再到线程安全的集合实现,每个组件都有其特定的用途和优势。在面试中,理解并能够熟练运用这些集合类...
Java集合List集合Set集合Map集合Collection和collections工具类的框架图
本文将深入解析Java集合框架的各个方面,包括Collection、List、Set和Map,以及它们的相关实现和使用原理。 **1. 集合框架概述** 集合框架是一个统一的数据结构和算法的集合,它提供了对数据进行高效处理的工具。...
Java集合框架主要包括以下几种容器: - **Collection**:这是所有单列集合的根接口,包括List、Set等。 - **Set**:这是一个不允许重复元素的集合。 - **List**:这是一个有序的集合,允许重复元素,并且可以通过...
在Java集合框架中,主要有六种核心接口:`Collection`, `Set`, `List`, `Queue`, `Deque`, 和 `Map`。此外,还有五个抽象类以及多个实现类,它们共同构成了Java集合框架的基础。 #### 二、核心接口介绍 1. **`...
### 精通Java集合框架——List, Set, Map #### 概述 Java集合框架是一种高度抽象且灵活的数据组织工具,它通过一系列接口来定义不同类型的数据容器,并提供了丰富的操作这些容器的方法。本文将深入探讨Java集合...
Java 集合框架的组成部分包括 Collection、List、Set、Map 等接口,ArrayList、LinkedList、HashSet、HashMap 等实现,和各种算法,如查找、排序等。这些组成部分可以帮助程序员更方便地使用集合,提高程序的速度和...
### Java集合框架详解 #### 一、概述 Java集合框架为开发者提供了一套全面且功能强大的工具集,用于处理各种不同类型的数据集合。该框架的设计旨在提高程序的开发效率及运行时的性能。它包含了多种接口、类以及...
Java集合框架是Java编程语言中处理数据组织的核心部分。它提供了一系列接口、抽象类和具体实现类,帮助开发者有效地管理对象集合。本篇文章将深入探讨集合框架中的三大核心组件:`List`、`Set`以及`Map`,并通过具体...
### Java集合框架总结 #### 一、Java集合框架概述 Java集合框架是Java标准库的一部分,它提供了一系列的接口和类来存储和操作各种类型的对象集合。这些接口和类遵循一致的设计模式,使得开发人员可以方便地管理和...
内容概要:本文详细介绍了Java集合框架的重要性和在Android开发中的应用。首先,阐述了集合框架的基本概念,包括接口(Collection、Set、List、Map)和其实现类(ArrayList、LinkedList、HashSet、TreeSet、HashMap...