- 浏览: 120339 次
- 性别:
- 来自: 广西
文章分类
最新评论
-
greemqqran:
这方法 源码,是怎么的哦?
可变参数,数组与集合之间的转换 -
greemqqran:
Arrays.asList
可变参数,数组与集合之间的转换 -
ricoyu:
引用? super E:接收的是E类型对象应该是: ? sup ...
泛型-
数组:
#######
本身就是一个容器,用来存储数据。
特点:是固定长度的。
好处:给元素进行编号,从零开始。同时也可以通过length属性获取数组长度。
什么时候使用数组呢?
当数据较多时,通常为了方便操作这些数据都需要进行临时存储。
习惯:通常操作数组都需要进行遍历。获取数组中的元素需要一个指针。
通过对指针的值的改变就可以对数组中的数据进行操作。
常出现的问题:
1,数组角标越界异常。ArrayIndexOutOfBoundsException
什么时候会发生呢?当使用到了数组中不存在的角标时就会发生该异常。
2,空指针异常。NullPointerException
当引用型变量没有任何指向时,还在使用该引用变量操作实体内容,会发生该异常。
########
-------------------
int[] arr = new int[3];
该句代码在内存中的分配情况。
堆内存:开辟一个空间,建立一个数组实体,并对数组中的元素进行了默认初始化。
栈内存:定一个局部变量,存放了该实体在对内存中的首地址值。
栈内存特点:存放局部变量,当该变量使用完毕(生命周期结束),自动被释放。
堆内存特点:存放数组和对象,每一个实体都有内存地址值,堆内存中的变量都有默认初始化值,通过垃圾回收机制对堆内存中 的不在被使用的实体进行回收。
--------------------
数组的常见操作:
1,遍历。
public static void printArr(int[] arr)
{
for(int x=0; x<arr.length; x++)
{
if(x!=arr.length-1)
System.out.print(arr[x]+",");
else
System.out.println(arr[x]);
}
}
2,获取最值。int[] arr = new int[3];
arr = null;
System.out.println(arr.length);
getMax(null);
public static int getMax(int[] arr)
{
if(arr==null)
throw new RuntimeException();
int max = arr[0];
for(int x=1; x<arr.length;x++)
{
if(arr[x]>max)
max = arr[x];
}
return max;
}
public static int getMin(int[] arr)
{
int min = 0;
for(int x=1; x<arr.length; x++)
{
if(arr[x]<arr[min])
min = x;
}
return arr[min];
}
3,排序。
选择排序
特点:选择一个位置,通过该位置上变化的元素和其他元素进行比较,走完一圈,该位置出现最值。
内循环结束一次,在0角标位出现最值。
代码体现形式:
public static void selectSort(int[] arr)
{
for(int x=0; x<arr.length; x++)
{
for(int y=x+1; y<arr.length; y++)
{
if(arr[x]>arr[y])
{
swap(arr,x,y);
}
}
}
}
public static void bubbleSort(int[] arr)
{
for(int x=0; x<arr.length; x++)//for(int x=arr.length-1; x>=0; x--)
{
for(int y=0; y<arr.length-x-1; y++)//for(int y=0; y<x; y++)
{
if(arr[y]>arr[y+1])
{
swap(arr,y,y+1);
}
}
}
}
y<arr.length-x-1:
-x : 通过不断循环,减少每一次参与比较元素的个数。
-1 :防止y+1的角标越界。
private static void swap(int[] arr,int x,int y)
{
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
4,查找。
public static int getIndex(int[] arr,int key)
{
for(int x=0; x<arr.length; x++)
{
if(arr[x]==key)
return x;
}
return -1;//为什么返回-1呢?因为数组中没有-1这个角标,所以可以通过-1来表示元素不存在的情况。
}
折半查找,二分查找。
这种方式有一个必要的前提:被查找的数组一定要是有序的。
public static int halfSearch(int[] arr,int key)
{
int max,min,mid;
max = arr.length-1;
min = 0;
mid = (max+min)/2;
while(arr[mid]!=key)
{
if(key>arr[mid])
min = mid + 1;
else if(key<arr[mid])
max = mid - 1;
if(min>max)
return -1;
mid = (max+min)/2;
}
return mid;
}
public static int halfSearch(int[] arr,int key)
{
int max,min,mid;
max = arr.length-1;
min = 0;
while(min<=max)
{
mid = (max+min)/2;
if(key>arr[mid])
min = mid +1 ;
else if(key<arr[mid])
max = mid - 1;
else
return mid;
}
return -1;
}
发表评论
-
动态代理+注解实现用户权限控制
2012-12-23 00:01 1363首先第一步我们需要定义一个接口UserDao p ... -
JDK动态代理模式
2012-12-22 21:51 900package cn.dhcool.dynamic.proxy ... -
代理proxy模式
2012-12-22 20:45 0静态代理模式: 需要有一个公共的借口,还有一个真实的实现类, ... -
工厂模式下出现的问题-null异常
2012-12-15 18:31 922遇到了一个问题: public class Dao ... -
内部类详解
2011-12-09 21:23 666从Java1.1开始引入了内部类以来,它就引起了人们的激烈争论 ... -
动态代理实现
2011-11-22 02:03 1048package com.dhcool.proxy; ... -
内省总结
2011-11-19 02:43 843package com.dhcool.introspec ... -
线程锁
2011-10-10 13:27 822sleep(), wait(),yield(),这3个方法,s ... -
类似百度谷歌分页算法实现
2011-09-08 15:58 1592<%@ page language="j ... -
充当服务端代码
2011-08-05 16:53 676import java.net.*; import java ... -
获取文件中邮件的示例
2011-08-05 12:25 737import java.util.regex.*; impo ... -
正则表达式常用字符
2011-08-05 12:22 920构造 匹配 字符 x 字符 x ... -
正则表达式
2011-08-05 12:16 847第一种:1.定义匹配规则如:String qqreg = &q ... -
InetAddress
2011-08-04 21:59 904import java.net.*; class Inet ... -
B/S socket
2011-08-04 21:08 1030import java.net.*; import java ... -
TCP多线程文件上传
2011-08-04 14:51 897/* 上传图片 */ import java.io.*; ... -
网络编程基础
2011-08-04 14:25 838网络编程: 网络通讯中所需要了解的一些内容。 T ... -
一道题
2011-08-02 21:05 614/* 有五个学生,每个学生有3门课的成绩,从键盘输入以上数据 ... -
TCP
2011-08-02 20:46 781import java.net.*; import ja ... -
UDP
2011-08-02 20:35 864import java.net.*; import java ...
相关推荐
本文将详细介绍 MATLAB 中字符数组和字符串数组的概念与操作方法,以及一些常用的文本操作函数。 #### 二、字符数组 **定义与创建** 字符数组是一种基本的数据结构,主要用于存储和处理文本数据。在 MATLAB 中,...
7.1.1 一维数组与常用操作.py7.1.1 一维数组与常用操作.py7.1.1 一维数组与常用操作.py7.1.1 一维数组与常用操作.py7.1.1 一维数组与常用操作.py7.1.1 一维数组与常用操作.py7.1.1 一维数组与常用操作.py
Linux C 开发中有关 字符串,字符数组,结构体常用操作总结
### 操作Java数组的常用工具类详解 在Java编程中,数组是一种常见的数据结构,用于存储固定大小的同类型元素集合。为了简化数组的操作并提高代码的效率与可读性,Java提供了`Arrays`类,这是一个包含了一系列静态...
5. **数组常用函数** - `concat()`:连接两个或更多数组并返回新的数组。 - `push()`:向数组末尾添加一个或多个元素,并返回新的长度。 - `pop()`:删除并返回数组的最后一个元素。 - `shift()`:删除并返回...
内容概要:本文档详细介绍了Java编程中数组的概念,数组的声明、创建、初始化,以及各种常用的数组操作技巧。首先讲解了数组的基本特征——长度固定、同类型存储及在堆中的分配;接着深入探讨了不同维度的数组声明、...
5. 图论:邻接矩阵是图的常用表示,对角矩阵用于表示节点的权重。 四、编程实践 在编程中,C++的`std::vector`、C的动态数组、Java的`ArrayList`、Python的列表等都是数组的实现。处理特殊矩阵时,可使用库函数,...
在MATLAB中,数组字符串、字符数组和字符串数组是处理文本数据的重要工具,它们在算法开发、数据可视化、数据分析及...字符数组和字符串数组+文本操作常用函数.mp4`进行实践,理论与实践相结合,才能真正掌握这些知识。
5. 遍历:常用for循环遍历数组,如`for (int i = 0; i ; i++) { System.out.println(numbers[i]); }` 二、排序算法 排序是计算机科学中的经典问题,有多种方法可以对数组进行排序。以下是一些常见的排序算法: 1. ...
本篇文章将深入探讨PHP中数组的常用函数,帮助你更好地理解和使用它们。 1. 创建数组 在PHP中,我们可以通过`array()`函数来创建数组。例如: ```php $array = array('apple', 'banana', 'orange'); ``` 也可以使用...
在实际编程中,我们经常需要对数组进行排序、删除和查找等操作,以实现更高效的数据处理。本文将深入探讨这些操作,并介绍一种联合搬算法来优化这些操作。 一、数组的排序 在C语言中,最常用的排序算法之一是冒泡...
Array对象提供了许多内置方法,方便我们对数组进行各种操作。以下是一些常用的Array方法的详细说明: 1. **`length`**:这是一个属性,而非方法,但它非常基础且重要。它返回数组的元素个数。 2. **`push()`**:向...
数组的常用操作主要包括创建、更新、读取和删除,也就是常说的CRUD操作。这些操作在处理任何动态数据时都至关重要,尤其是在网页交互和服务器端处理用户请求时。 **创建数组(CREATE)** 创建数组通常通过指定一组...
在JavaScript编程中,数组是常用的数据结构,而处理数组中的对象去重问题是一个常见的需求。在给定的示例中,我们看到一个包含多个对象的数组`tmp`,每个对象有`id`和`magicId`两个属性。下面将详细讨论如何实现这种...
通过循环遍历数组,对每个元素进行查找和替换操作,最终得到处理后的数组。 五、应用场景 1. 数据清洗:在数据分析或处理大量文本数据时,可能需要统一替换某些特定的文本,如空格、特殊字符等。 2. 文本过滤:在...
为了更深入地理解这个程序,你需要查看这个文件,了解其具体的实现细节,包括基准的选择方式、如何进行分区操作以及递归排序的逻辑。此外,你还可以通过运行这个程序并分析其输出,来验证其正确性和效率。
以下是对标题和描述中提到的一些JavaScript数组操作方法的详细说明: 1. **concat()**: `concat()` 方法用于合并两个或多个数组,但不改变原始数组。它返回一个新数组,包含所有数组的元素。例如: ```...
本文介绍了如何使用Java数组进行常见操作,并深入了解了一些常用的算法。通过对题目代码的分析和解决方案的说明,我们了解了每个操作的实现方法和作用。掌握这些数组操作和算法对于编写高效的Java程序非常重要,它们...
综上所述,本文通过具体实例详细介绍了JavaScript中如何根据JSON数组的多个字段进行排序以及对JSON数组进行一系列常用操作,包括获取特定属性的对象、删除对象、修改对象属性以及向数组中添加对象。这些操作是处理...