基础知识——Java数组和集合

数组

?
?

Java中的数组是一个类

?
?

Java中数组作为一个特殊的类,也是不同于C++的一点表现,既然Java中的数组是一个类,那么字符串数组和整型数组的类名是一样的吗?答案是否定的,整型数组的类名是[I,而字符串数组的类名是[Ljava.lang.String。

?
?

存储数组中的元素

?
?

另外Java中数组操作基本数据类型和引用类型的方式各不相同,在处理基本数据类型的时候,数组保存的是变量的值,未指定时是0,在处理引用类型时,数组保存的是对象的引用,未指定时是null

?
?

访问数组中的元素

?
?

既然Java中的数组是一个类,那么访问数组中的元素就是通过成员变量的形式来访问的。

?
?

拷贝数组中的元素

?
?

数组拷贝要用到System.arraycopy()

?
?

二维数组的长度不固定

?
?

举个例子就明白了

int[][] arr=new int[3][];//不用指定第二个维度的长度

arr[0]=new int[]{4};

arr[1]=new int[]{5,6};

arr[2]=new int[]{7,8,9};

?
?

集合

?
?

Java中有哪些集合

?
?

Java中的集合包括List、Set、Map三大类,它们的区别是:List是有序存放的,允许重复;Set是无序存放的,不允许重复,Map是存放键值对的

?
?

所有的集合实现类,都只能存放对象,如果要存放基本数据类型,那么必须要使用其包装类

?
?

Java集合中如何遍历

?
?

Java的集合类都是可迭代的,它们都实现了Iterator接口中的方法,通过调用集合类的Iterator方法将其转换成一个Iterator接口,通过Iterator.next()实现集合的遍历

?
?

比较器:比较两个对象的大小

?
?

类实现Comparable接口

?
?

如果要按照我们想要的方式比较两个对象的大小,那么这个类就需要实现Comparable接口,这个接口是java.lang包下的,举个例子好说明一下

?
?

public class CompareUserTest implements Comparable{

private String name;

private int age;

?
?

public CompareUserTest(String name, int age) {

super();

this.name = name;

this.age = age;

}

?
?

public int getAge() {

return age;

}

?
?

public void setAge(int age) {

this.age = age;

}

?
?

public int compareTo(Object o) {

return this.age-((CompareUserTest)o).getAge();

}

?
?

public static void main(String[] args) {

?
?

CompareUserTest user1=new CompareUserTest("Tong", 24);

CompareUserTest user2=new CompareUserTest("Song", 25);

?
?

if (user1.compareTo(user2)>0) {

System.out.println("Tong is older than Song");

}else if (user1.compareTo(user2)<0) {

System.out.println("Tong is younger than Song");

}else {

System.out.println("Tong and Song is the same age");

}

}

}

?
?

自己创建一个比较器类继承Comparator

?
?

但如果我们按照我们自己的方式对数组进行排序,那么我们就需要实现一个比较器类继承Comparator,这个是在java.util包下的。然后把这个比较器传给sort,比如Array.sort或者Collection.sort都行,Collections.sort(list,new UserComparetor());

?
?

class User {

private String name;

private int age;

?
?

public User(String name, int age) {

super();

this.name = name;

this.age = age;

}

?
?

public int getAge() {

return age;

}

?
?

public void setAge(int age) {

this.age = age;

}

}

?
?

class UserComparetor implements Comparator {

?
?

@Override

public int compare(Object o1, Object o2) {

// TODO Auto-generated method stub

User user1 = (User) o1;

User user2 = (User) o2;

return user1.getAge() - user2.getAge();

}

}

时间: 2024-08-02 09:20:41

基础知识——Java数组和集合的相关文章

初学者入门web前端 C#基础知识:数组与集合

对于初学者,想要入门web前端,要有足够的信念和坚持,不然只会越走越远,我现在就深深的体会到. 我本是一个很拒绝代码的人,以前想过UI设计,但是在这段学习时间里,发现其实只要认真,代码并不是很难 所以我整理了一套前期学C#的知识点,对于后期学习JavaScript有很大的帮助. 一.数组与集合数组:能存放任意多个同类型的数据 数据项:类型相同 ①每一个数据型都有一个编号(索引或下标) ②数据的索引(下标)是一个int类型的数字 ③从0开始,依次为数据中每一个数组项编号 数组的声明与赋值 声明:数

python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding:utf-8from com.wenhy.crawler_baidu_baike import url_manager, html_downloader, html_parser, html_outputer print "爬虫百度百科调度入口" # 创建爬虫类class SpiderMai

编程基础知识——Java JNI开发流程(2)

android中使用jni调用本地C++库 android平台上的本地库文件后缀 .so.类似windows上的dll文件. 要在android上使用jni,首先需要下载android ndk. 操作步骤,正常建立android工程,然后在android工程那里右键,属性,选择Android Tools -> Add Native Support.就可以为android工程增加本地库支持. 添加支持后的android工程,会增加jni目录,C++代码就写在这个目录里. 新建一个类,并且使用nat

编程基础知识——java类加载

java类加载 先来看一段小程序: package com; public class Main1 { static { System.out.println("1111") ; } public static void main(String[] args) { System.out.println("2222") ; } } 输出结果为: 1111 2222 其中static的执行时机就是class被 classloader加载的时候执行. 这有什么用?看下面代

JavaScript基础知识梳理--数组

JavaScript基础知识梳理--数组 1.创建方法 空数组:var obj=new Array(); 指定长度数组: var obj=new Array( size ); 指定元素数组 :  var obj=new Array( 元素1,元素2,....): 单位数组:var obj=new Array[ 元素1,元素2,元素3,...,元素N]; 多维数组:var a=new Array( [数组1],[数组2],[数组3],...,[数组N] ); 2.基本操作 存取数组元素: 单维数组

C语言基础知识----指针数组 &amp;&amp; 数组指针 &amp;&amp; 函数指针 &amp;&amp;指针函数

指针数组 && 数组指针 char (*ptr)[5]; //定义一个指向数组指针ptr,指向包含5个char类型的数组 char *a[5]; //定义一个指针数组a,包含5个char*类型指针 #include <stdio.h> int main(void) {     char *a[5]={"red","white","blue","dark","green"};   

java基础知识-(数组)

Java数组 一.  概述 1.     定义:数组是一种数据结构,用来存储同一类型值的集合. 2.     数组是存在下标索引的,通过下标可以获取指定位置的元素,数组小标是从0开始的,也就是说下标0对应的就是数组中第1个元素,可以很方便的对数组中的元素进行存取操作. 3.     数组存在一维数组和多维数组. 二.  一维数组 1.     声明方式一 A.     数据类型   数组名   =   new 数据类型[个数] String s[] = new String[10]; 定义了一个

JAVA基础知识-java文化基础和运行环境

JAVA基础知识 1,java是95年sun公司推出的开发语言,发展很快,09年被oracle公司收购.至今分为SE.ME.EE三个发展方向和软件版本. 2,运行java的环境主要是通过JVM(java virtual machine)实现的.首先编写.java结尾的源文件,通过编译器编译成.class结尾的字节码文件,然后通过解释器实现在不同平台上一致运行的效果. 3,jvm,jre和jdk的区别:jvm,java虚拟机:jre,java运行环境,jdk:java开发工具包. 4,jdk的下载

java 数组与集合(list)相互转化

上代码 package com.core.array2collection; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class Demo { public static void main(String[] args) { List<Student> stuList = new ArrayList<Student>(); for(int i = 0 ; i