java集合

java中变量、容器的基本使用

                  目录

1. java变量

2. java数组

3. java常用函数

4. String

5. map

6. vector     

7. stack

8. ArrayList

9. Queue/LinkedList

10. 文件操作


1. java变量

1.1 八大基本数据类型的默认值:
boolean  false
char     '/uoooo'(null)
byte     (byte)0
short    (short)0
int      0
long     0L
float    0.0f
double   0.0d

1.2 变量类型的转化
(int)b                            // 将double转变为int
Integer nI = new Integer(n);      // 将int转变为Integer
int a = nI.intValue();            // 将Integer转变为int
String a = "123" + 4;             // 将int直接转化string
String s = String.valueOf(i);     // 将int转变为string
String res = "" + 'a';            // 将char转化为string
int a = Integer.parseInt(str);    // 将string转变为int

List<int[]> list = new ArrayList<>();
int[] arr = tmp.stream().mapToInt(k->k).toArray();  
list.add(arr);
list.toArray(new int[list.size()][]);  // 将List<int[]>变为int[][]
// 直接将int[][]设置为最大的的也可以。

1.3 取模运算与取余运算
Math.floorMod(+4, -3) == -2;    (+4 % -3) == +1
+4 / -3 = -1.33
取余:商的符号与前者相同,向0舍入
取模:商的符号与后者相同,向无穷大舍入

1.4 异或操作
x ^= num

2. java数组

char board[][] = {{'A','B','C','E'},{'S','F','E','S'},{'A','D','E','E'}};
int[][] vis = new int[row][col];  // 初始的数组全部为0
int row = board.length;     // 求数组的行数
int col = board[0].length;  // 求数组的列数
if( matrix == null || matrix.length == 0 || matrix[0].length == 0 ) return new int[0];  // 如何判断数组是否为空

arraycopy(Object src, int srcPos, Object dest, int destPos, int length)  // int数组切分
// 从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
int[] c = {1,2,3,4};
int[] a = new int[2];
int[] b = new int[2];
System.arraycopy(c,0,a,0,2);
System.arraycopy(c,2,b,0,2);

System.out.println( Arrays.toString(a) );  // int数组直接打印,将数组变为字符串然后直接打印字符串

3. java常用函数

3.1 Math.abs(i)               // 取绝对值, int, double, float都可以
3.2 Collections.reverse(tmp)  // 翻转数组,只可ArrayList,不可int[]
3.3 Arrays.sort(a)            // 包java.util中的类Arrays使用快速排序对基本类型的数组按升序进行排序方法
3.4 Arrays.sort(a,Collections.reverseOrder());    // 从大到小排序
3.5 double b = Math.pow(10,n) // 10的n次方运算

4. String

String str = "";                    // 定义res字符串时,需要初始化
str.charAt(0);                      // 读取字符串中的第0个字符
str.length();                       // 求字符串的长度
s = s.trim();                       // 删除首尾空格
String str[] = string.split(" ");   // 字符串切分
tmp = s.substring(i + 1, j + 1)     // 字符串截取
String toLowerCase()                // 把字符串转小写
String toUpperCase()                // 把字符串转大写
pre.compareTo("25") <= 0            // 字符串的比较,其等价于将字符串转化为int然后再比较
str.indexOf("3-153")                // 如果存在,就返回开始的下标,否则返回-1


char[] chs = str.toCharArray();     // 将字符串转化为字符数组
String str = new String(chs);       // 将字符数组转化为字符串


String[] str1;
int a = str1.length;
String str2;
int b = str2.length();

String res = "\" hello \""

/*
StringBuffer.append()
StringBuffer.toString()
StringBuffer.deleteCharAt(str.length()-1)
res.append(s.substring(i + 1, j + 1) + " ");  // 字符串的截取,StringBuffer才有append()

String s1 = "abc";
String s2 = "efg";
System.out.println(s1.compareTo(s2));  // -4
*/

5. map

import java.util.HashMap;
import java.util.Map;

Map<String, Integer> maps = new HashMap<String, Integer>();
map.put("key","values");   // 加入数据
map.get("key3");           // 为空会返回null
map.remove(key);           // 删除key的键值对


Integer.parseInt(String.valueOf(m.get(key)))     // 将object转化为int

Map[] states = {           // hashmap初始化
            new HashMap<>() {{ put('d', 7); }},                                        
            new HashMap<>() {{ put(' ', 8); }}                                         
        };

Map<String, String> map = new HashMap<String, String>();
for (String key : map.keySet()) {     // 遍历hashmap数组
	map.get(key);
}

Map<String, String> map = new HashMap<String, String>();
for (Map.Entry<String, String> entry : map.entrySet()) {
	entry.getKey();
	entry.getValue();
}

6. vector     

Vector<String> v = new Vector<String>();
v.add("one");
v.add(2, "two");
v.size();  // 这才是显示容器中有多少元素
v.remove("Test0"); //删除指定内容的元素 
v.remove(0); //按照索引号删除元素

// vector的遍历1
Vector<String>  t = new Vector<String>();
for (int i = 0; i < t.size(); i++) {
    System.out.print(t.get(i));    
}

// vector的遍历2
Iterator<String> it = t.iterator();
while (it.hasNext()) {
    String string = (String) it.next();
    System.err.print(string);
}
// Vector与ArrayList一样,也是通过数组实现的,不同的是它支持线程的同步。
// v.capacity();  // vector容器总的容量,无用
// 参考链接:https://www.cnblogs.com/xiaostudy/p/9526270.html

7. stack

import java.util.Stack;

Stack<Integer> stack = new Stack<Integer>();
stack.push("aaaa"); // add
stack.peek();      // 返回栈顶元素
stack.pop();       // 弹出栈顶元素, 返回值为栈顶元素值
stack.empty();     // 判断堆栈是否为空
stack.size();

8. ArrayList

ArrayList<String> list = new ArrayList<String>();
list.add("d");
list.add(2, "c");
list.get(1);       // 查询1处的元素值
list.set(2,"h");
list.remove(0);    // 删除下标为0的元素


list.clear();
list.indexOf("a"); // a第一次出现的位置,如果动态数组中不存在指定的元素,则该 indexOf() 方法返回 -1。
list.lastIndexOf("a");  //a最后一次出现的位置
list.size();
list.isEmpty();    // 返回true表示没有任何元素。

// 二维ArrayList数组
List<List<Integer>> list = new ArrayList<>();
ArrayList<Integer> tmplist = new ArrayList<Integer>();
list.add(tmplist);   

// res和tmp是类全局变量
List<List<Integer>> res = new ArrayList<>();
ArrayList<Integer> tmp = new ArrayList<Integer>();
// 位于成员函数内部
res.add(new ArrayList(tmp));  // 为什么需要加一个new ArrayList? 因为tmp在之后会被修改
ArrayList<Integer> num2 = new ArrayList<Integer>(num1);  // 对象的复制
// 我的理解是arraylist添加tmp是添加tmp的起始地址,然后如果之后tmp发生改变,那么arraylist中的值也会变化的,所以需要通过new一块新的内存空间来存放之前的结果。那么我觉得tmp中存放的数据也会被复制到新的内存空间中去的

9. Queue/LinkedList

LinkedList<String> list = new LinkedList<String>();
list.add(“张三”);
list.get(1);               //get方法获得下标1的值
list.set(2,“赵四”);
list.remove(1);            //删除下标为1的元素
list.addFirst(“狗娃”);     //addFirst方法将狗娃添加为首元素
list.addLast(“狗剩”);      //addLast方法将狗娃添加为末尾元素
list.removeFirst();        //删除的首元素
list.removeLast();         //删除末尾元素
System.out.println(list);  // 数组也可以直接打印

Queue<String> queue = new LinkedList<String>();    // 队列由LinkedList来实现,其是ArrayList的链式实现方式
queue.add("a");  // 添加元素,也可以用offer
queue.peek();     // 返回队头元素的值,队列为空的时候会返回null
queue.poll();     // 返回第一个元素,并在队列中删除
queue.isEmpty();   // 返回true表示没有任何元素。
queue.size();
for(String q : queue) { System.out.println(q); }   // 遍历队列queue

Deque<Integer> deque = new LinkedList<>();
Deque实现了一个双端队列(Double Ended Queue),它可以:
-将元素添加到队尾或队首:addLast()/offerLast()/addFirst()/offerFirst();
-从队首/队尾获取元素并删除:removeFirst()/pollFirst()/removeLast()/pollLast();
-从队首/队尾获取元素但不删除:getFirst()/peekFirst()/getLast()/peekLast();
-总是调用xxxFirst()/xxxLast()以便与Queue的方法区分开;
避免把null添加到队列。

// 自动创建堆
Queue<Integer> A, B;
A = new PriorityQueue<>();                   // 小顶堆,保存较大的一半
B = new PriorityQueue<>((x, y) -> (y - x));  // 大顶堆,保存较小的一半

10. 文件操作

10.1 文件读取
File file = new File("C:\\Users\\ybxm\\Desktop\\华为软挑\\training-data\\training-1.txt");
Scanner input;
try {
    input = new Scanner(file);
}catch (Exception e){
    System.out.println(e);
    return ;
}

10.2 文件写入
import java.io.FileWriter;
String fileName="C:\\kuka.txt";
FileWriter writer = new FileWriter(fileName,true);  // true,表示文件追加。如果只有第一个参数,则表示如果文件已经存在,则删除,重新创建一个新的文件
SimpleDateFormat format = new SimpleDateFormat();
String time = format.format(new Date());
writer.write("\n\t"+time);
writer.close();

10.3 命令行输入
Scanner input = new Scanner(System.in);
int n = input.nextInt();        // 接收一个int变量
input.nextLine();               // 吃回车
String str = input.nextLine();  // 以字符串的形式读取一行数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值