Intellj小技巧

数组

1.java数组元素类型是唯一的,即一个数组只能存储一种数据类型的数据,而不能存储多种数据类型的数据。
2.java数组的长度,一旦初始化完成,控件就被固定,即数组的长度将不可改变。。
3.java即可存储基本类型的数据,也可以存储引用类型的数据,只要所有的数组元素类型相同
4.java数组也是一种数据类型,它本身是一种应用类型。例如int是一个基本类型,但int[] 就是一种引用类型了。

定义数组

* type [] arrayName;变量类型 [] 变量名  *推荐*
* type arrayName []; 变量类型 变量名 []
* type [] arrayName = { 变量值,变量值,变量值...};

数组初始化

* 静态初始化

罗列数组的每个元素

#java
int [] intArr;
intArr = new int []{5,6,7,8,20};
Object [] objArr ;
objArr = new String[]{"java","python"};
Object [] objArr2 = new Object[]{"java","python"};
*动态初始化

直接定义数组的长度:arrayName = new type [length];

#java
int [] intArr = new int [5];
System.out.println(intArr.length);

使用数组

使用下标访问数组的某个元素,可以赋值和取值

System.out.println(intArr[4]);

foreach循环

从java5以来,java提供了一种更简单的循环:foreach循环。语法:

for(type a:array|collection){ //type 变量类型 a:变量 array:数组 collection:集合

System.out.println(a)

}

#java
public static void main(String[] args){
int [] intArr = new int [5];
intArr[0] = 2;
intArr[3] = 5;
for (int i:intArr){
System.out.println(i);
}
String [] stringArr = new String [4];
stringArr[0] = "java";
stringArr[3] = "python";
for(String a:stringArr){
System.out.println(a);
}

list集合

由于对象数组弱点就是长度的固定,为了解决这个问题,从jdk1.2开始使用集合,处理对象数组,解决长度固定的问题。

数组可以存储基本类型,存储对象;

集合只存储对象,不存储基本类型;

数组和集合是容器:基本数据多了用数组,对象多了用集合

数组和集合的区别:

* 数组定长;集合变长

* 数组存储类型单一,集合存储任意对象

* 数组存储基本类型,对象;集合只存储对象

java中集合有多种类型:

Collection

* List必须保持元素特定的顺序,自动扩展。
* Set不能有重复元素
# Queue保持一个队列(先进先出)的顺序

有人想要自动排序的组数,有了TreeSet,TreeList,Tree**

而几乎所有的集合都是基于数组来实现的。

集合是对数组做的封装,所以数组永远比任何一个集合要快。

但任何一个集合,比数组提供的功能要多:

* 数组声明了它所容纳的元素的类型,而集合不声明。这是由于集合以object形式来存储它们的元素

* 一个数组示例具有固定的答谢,不能伸缩。集合则可根据需要,动态改变大小

* 数组是一种可读可写的结构,没有办法创建一个只读数组。集合提供了ReadOnly()方法,返回一个集合的只读版本。

List接口特有方法:

add(Object o) 在列表的末尾追加一个元素

add(int index,Object o) 在列表的特定位置插入一个元素

remove(Object o) 按元素值删除元素

remove(int index) 按索引删除元素

get(int index) 获取指定位置的元素

set(int index,Object o) 修改指定索引的元素

boolean addAll(int index,Collection c) 在列表的特定位置上插入另一个集合

List subList(int start, int end) 获取集合中的一部分,包含start,不包含end,返回新集合

size 返回列表现在的长度

#java
public static void main(String[] args){
ArrayList arr1 = new ArrayList(); arr1.add("1");//add追加一个元素
arr1.add(2);
arr1.add(true);
arr1.add(2,"java");//add(index,element)在特定位置添加
arr1.add(2,"python");
//foreach循环
for(Object o:arr1){
System.out.println(o);
}
System.out.println(arr1);
System.out.println(""+arr1.indexOf("1"));
arr1.set(3,"tencent");
System.out.println(arr1);
System.out.println(arr1.get(3));
arr1.remove(2);
arr1.remove("java");
List subArr1 = arr1.subList(2,3);
arr1.addAll(3,subArr1);
System.out.println(arr1);
List arr2 = new ArrayList();
arr2.add("21");
arr1.addAll(arr2);
System.out.println(arr1);
List arr3 = new ArrayList();
arr3.add("31");
arr1.addAll(3,arr3);
System.out.println(arr1);
}

Map

Map是键值对(key-value)

put 添加键值对

get 通过key获取value

#java
package study1; import groovy.util.MapEntry; import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set; public class HashMapTest {
public static void main(String[] args){
HashMap ha = new HashMap();
ha.put(1,"java");
ha.put(2,"python");
ha.put(3,"ruby");
ha.put(4,"python");
System.out.println(ha.get(3));
//对value进行迭代
Collection vaules = ha.values();
System.out.println(vaules);
for(Object o:ha.values()){
//Map的key是唯一的,value不是唯一的。即可以根据key获取value,但不能根据value获取key
//
System.out.println(o);
}
//对key进行迭代
Collection keys = ha.keySet();
System.out.println(keys);
for(Object o:ha.keySet()){
System.out.println(o);
System.out.println(ha.get(o));
}
Set<MapEntry> entry = ha.entrySet();
for(Object o:entry){
System.out.println("entry"+o);
}
Iterator<Object> intor = ha.keySet().iterator();
System.out.println("intor"+intor);
while(intor.hasNext()){
System.out.println(intor.hasNext());
Object key = intor.next();
Object value = ha.get(key);
System.out.print(key+"\t");
System.out.println(value);
}
} }

ruby

[java, python, ruby, python]

java

python

ruby

python

[1, 2, 3, 4]

1

java

2

python

3

ruby

4

python

entry1=java

entry2=python

entry3=ruby

entry4=python

intorjava.util.HashMap$KeyIterator@378bf509

true


1 java

true

2 python

true

3 ruby

true

4 python

java study2的更多相关文章

  1. Redis高级进阶(一)

    一.redis中的事务 在关系型数据库中事务是必不可少的一个核心功能,生活中也是处处可见,比如我们去银行转账,首先需要将A账户的钱划走,然后存到B账户上,这两个步骤必须在同一事务中,要么都执行,要么都 ...

  2. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  3. Java学习笔记之:Java流程控制

    一.介绍 Java流程控制包括顺序控制.条件控制和循环控制. 顺序控制,就是从头到尾依次执行每条语句操作.条件控制,基于条件选择执行语句,比方说,如果条件成立,则执行操作A,或者如果条件成立,则执行操 ...

  4. Java学习笔记之:java运算符

    一.介绍 计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量.我们可以把运算符分成以下几组: 算术运算符 关系运算符 位运算符 逻辑运算符 赋值运算 ...

  5. Java多线程之定时任务(Timer)

    package org.study2.javabase.ThreadsDemo.schedule; import java.util.Date; import java.util.Timer; imp ...

  6. Java多线程之sleep方法阻塞线程-模拟时钟

    package org.study2.javabase.ThreadsDemo.status; import java.text.SimpleDateFormat; import java.util. ...

  7. Java之Logger日志(Java8特性)

    import java.util.logging.Level; import java.util.logging.Logger; public class LoggingDemo { public s ...

  8. Java 8 stream 经典示例

    package org.study2.java8.stream; import org.junit.Test; import java.util.*; import java.util.stream. ...

  9. 【Java】GUI编程

    GUI编程 前言 某koukou老师的任务罢了,好在狂神老师居然有GUI的课,只能说是有救星了. [狂神说Java]GUI编程入门到游戏实战 最好笑的是,老师要求掌握的居然是14年的知识,就连狂神在上 ...

随机推荐

  1. 线程局部存储TLS

    1 .使用线程局部存储的理由 当我们希望这个进程的全局变量变为线程私有时,而不是所有线程共享的,也就是每个线程拥有一份副本时,这时候就可以用到线程局部存储(TLS,Thread Local Stora ...

  2. L1-045 宇宙无敌大招呼

    据说所有程序员学习的第一个程序都是在屏幕上输出一句“Hello World”,跟这个世界打个招呼.作为天梯赛中的程序员,你写的程序得高级一点,要能跟任意指定的星球打招呼. 输入格式: 输入在第一行给出 ...

  3. ReportViewer遇到的坑

    在VS2010下 使用ReportViewer的时候,用WEB导出报表,报错“”文件生成:本地报表处理期间出错.“. ” “报表定义具有无法升级的无效目标命名空间“http://schemas.mic ...

  4. Introduction of Build Tool/Maven, Gradle

    什么是build tool: build tool是可以自动由源代码创建可执行的应用程序的程序. Building 包括编译.链接和打包代码成一个可用的或可执行形式. 在小型项目,开发人员常常会手动调 ...

  5. Maven项目中的配置

    1 在配置好Maven项目后,新建一个Maven Project.如图 点击next,会进入如下界面: 选择webapp,不选择默认的quickstart,之后会进入以下界面 填好Group ID 和 ...

  6. Luogu 3246 序列

    Luogu 3246 序列 考虑莫队,不算特别优秀,但足以通过此题. 用莫队做,先考虑在当前区间右边加入一个数对答案的影响,其他三种情况同理. 若加入新数的区间为 \([L,R]\) ,那么加的贡献就 ...

  7. 【洛谷P1462】【二分+堆优化dij】

    题目描述 在艾泽拉斯,有n个城市.编号为1,2,3,...,n. 城市之间有m条双向的公路,连接着两个城市,从某个城市到另一个城市,会遭到联盟的攻击,进而损失一定的血量. 每次经过一个城市,都会被收取 ...

  8. (转)C++ 容器及选用总结

    目录 ==================================================== 第一章 容器 第二章 Vector和string 第三章 关联容器 第四章 迭代器 第五 ...

  9. Eclipse使用前准备(转)

    Eclipse的发布流程 M1  08/19/2009      M2     09/30/2009     M3     11/11/2009     M4     12/16/2009     M ...

  10. ZH奶酪:隐马尔可夫模型学习小记——forward算法+viterbi算法+forward-backward算法(Baum-welch算法)

    网上关于HMM的学习资料.博客有很多,基本都是左边摘抄一点,右边摘抄一点,这里一个图,那里一个图,公式中有的变量说不清道不明,学起来很费劲. 经过浏览几篇博文(其实有的地方写的也比较乱),在7张4开的 ...