java 刷题_[Java]刷题中的Java基础

数组

取数组长度是属性length

排序 Arrays.sort(arr,1,n+1);

数组的拷贝

int a[] = {4, 3, 6, 5, 1, 2};

9 int b[] = Arrays.copyOf(a, 4);

10 int c[] = Arrays.copyOfRange(a, 2, 4 + 1);

初始化为同一值,以二维数组为例:

int[][] dp=new int[cntLong+1][cntShort+1];//

for(int i=0;i<=cntLong;++i) {//

Arrays.fill(dp[i], Integer.MAX_VALUE);//

}

ArrayList

ArrayList maxRootHeap = new ArrayList();

maxRootHeap.add(input[i]);

maxRootHeap.get(0);

maxRootHeap.set(0, input[i]);

maxRootHeap.size()

arraylist.remove(idx)

LinkedList

只有LinkedList实现了removeLast()接口,所以使用该接口,则声明集合的时候要直接为LinkedList 而不是 List

在list的首部插入元素:ansList.add(0,list);

Queue

Queue是一个接口。

Queue rQ=new LinkedList<>();

Stack

s.push()

s.pop()

s.peek()

由于Stack继承Vector数组,而不是链表实现,有时需要扩容,所以效率低,推荐使用实现了Deque接口的LinkedList,Deque接口为双端队列,保留了pop()和push方法。

Deque stack=new LinkedList<>();

stack.push('a');

stack.pop

HashSet

HashSet set =new HashSet();

set.contains(elm);

set.add(elm);

HashMap

map value累加:map.put(subStr,map.getOrDefault(subStr,0)+1);

遍历mapfor(String str: map.keySet()){}

String与char[]

String

str1.charAt(pos)

遍历String的元素也可以先转成字符数组 :str1.toCharArray()

str1.trim().toCharArray()

s2.substring(begPos,endPos);

s2.length();

String[] strs=s1.split("\\.");

String转int:

Integer num=Integer.valueOf(s1);

int num=Integer.parseInt(s1);

indexOf作用:用于检索一个字符串在另一个字符串中的位置。

indexOf的几个重载方法如下:

int indexOf(String str) 意思为在字符串中检索str第一次出现的位置,如果找不到返回-1。

eg: String str = "I can because i think i can";

int index = str.indexOf("can");

System.out.println(index); // 2 从0开始,空格也算一位

int indexOf(String str,int fromIndex) 意思为 从字符串的fromIndex位置开始检索。

eg: String str = "I can because i think i can";

index = str.indexOf("can", 6);

System.out.println(index); // 24

char[]

char[] subStr=new char[subStrLen];

将 char 变量 c 转换成字符串

String.valueOf(char c) :

对象相等比较

要用obj1.equals(obj2),而不能用==,==比较的是对象地址。

输入

Scanner in=new Scanner(System.in);

while(in.hasNext()) {

int N=in.nextInt();

}

取最小值

public static int getMin(int... vals) {

int min=Integer.MAX_VALUE;

for(int val:vals) {

if(val

min=val;

}

}

return min;

}

Java.lang包

取两数较小值 min=Math.min(min,arr[i]);

排序

数组排序Arrays.sort(arr);

Collections.sort(list, new Comparator(){

/*

* int compare(Student o1, Student o2) 返回一个基本类型的整型,

* 返回负数表示:o1 小于o2,

* 返回0 表示:o1和o2相等,

* 返回正数表示:o1大于o2。

*/

public int compare(Student o1, Student o2) {

//按照学生的年龄进行升序排列

if(o1.getAge() > o2.getAge()){

return 1;

}

if(o1.getAge() == o2.getAge()){

return 0;

}

return -1;

}

});

System.out.println("排序后:"+list);

}

}

StringBuilder

StringBuilder sb=new StringBuilder();

sb.append("123");

sb.append("456");

string str=sb.toString();

String

str.substring(i, j);

关于new数组

Java与C++中创建数组

JAVA 里面的数组名是一个引用变量,引用变量是放在是放在一个栈里面,而JAVA数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。所以如果不new一下,就无法得到这个数组,即引用变量没有引用的对象。而在C++中,数组名实际上是数组的首地址,是一个指针,数组在声明之后就已经生成了这个数组对象。就不用new了

Java中new String类型与数组类型

不同于String类,String由于实现了常量池 所以new 和不new 有区别:new的话,引用变量指向堆区。不new的话,引用变量指向常量池。

对于数组的定义,初始化时用new与不用new 没区别,只是两种方式罢了,因为数组是引用数据类型,建立对象时,无论用不用new,数组实体都是放在堆内存中,引用变量放在栈内存。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值