一、常用的容器接口:
1、一个图:collection(set,list);map;
2、set接口:无序不可重复;两个实现类:HashSet,TreeSet;
格式:Set s=new HashSet();
方法:add(Object o)仅有一个方法,retain(),
3、list接口:有序可重复;两个实现类:LinkedList,ArrayList;
格式:List l=new LinkedList();List l=new ArrayList();
方法:add(Object o);add(int i,Object o);
l.add(1);表示往里面添加1;
l.add(1,3);表示往容器第二个位置添加3;
remove(int i),remove(非整型);
l.remove(1);表示删除容器第二个元素;
l.remove("2");表示删除容器内“2”的元素;
l.set(int i,object o);
l.set(2,4):表示把容器第三个元素替换成4;
4、Arrays排序和arraycopy();
作用:针对数组排序问题,只有升序排序;
运用:Arrays.sort(目标数组);
输出:System.out.println(Arrays.toString(目标数组));
arraycopy(源数组,源数组的起始位置,目标数组,目标数 组的起始位置,需要复制的数组长度);
5、打包和解包:
定义:将基础类型转换成对象,这种叫打包;
将对象转换成基础类型,这种叫解包;
例子:
int a=100;
Integer i=new Integer(a);//此时就叫打包;
int b=i/new Integer(a);//此时就叫解包
6、Iterator接口:
作用:简称迭代器,功能是遍历;
方法:hasNext(),next(),remove();
例子:
Collection c=new ArrayList();
c.add()......;如果这样是int型
Iterator i=c.iterator();
while(i.hasNext()){
Integer in=(Integer)i.next();
}
7、泛型:(基础篇)
格式:用<>加类型:<除基本类型除外>
8、Map接口:
格式:Map(K,V);
HashMap:无序,不可重复;
TreeMap:按K键的大小来输出,同样不可重复;
LinkedHashMap:按照代码先后顺序输出;
9、equals()与hashcode():
作用:equals()比较是两个对象的值是否相等;
hashcode()比较两个对象是否是同一个对象;
10、 Array读快改慢
Linked改快读慢
Hash搜索极快,遍历极慢
Tree插入/搜索都比较快,适合做索引
package test;
import java.util.*;
public class It2 {
public static void main(String[] args) {
Collection<Integer> c=new HashSet<Integer>();
c.add(1);
c.add(2);
c.add(3);
c.add(4);
System.out.println(c);
Iterator<Integer> i=c.iterator();
while(i.hasNext()){
int a=i.next();
System.out.print(a);
}
}
}
输出结果:
[1, 2, 3, 4]
1234
package test;
import java.util.Arrays;
public class test {
public static void main(String[] args) {
int [] i={1,5,6,9,3,6};
int [] m={2,3,4,4};
String [] s={"2","1"};
Arrays.sort(s);
for (String a:s){
System.out.println(a);
}
System.out.println(Arrays.toString(i));
System.arraycopy(i,1,m,0,3);
System.out.println(Arrays.toString(m));
}
}
输出结果:
1
2
[1, 5, 6, 9, 3, 6]
[5, 6, 9, 4]
package test;
class Fanxing<T, V> {
Fanxing(T name, V age) {
this.age = age;
this.name = name;
}
private T name;
private V age;
public T getName() {
return name;
}
public V getAge() {
return age;
}
public String toString() {
return this.getName() + " " + this.getAge();
}
public static void main(String[] args) {
Fanxing<String, Integer> he = new Fanxing<String, Integer>("Rollen", 12);
System.out.println(he.toString());
}
}
输出结果:
Rollen 12
package test.cn;
import java.util.*;
public class Test03 {
public static void main(String[] args) {
Map<String,Integer> m=new LinkedHashMap<String,Integer>();
m.put("小黄", 25);
m.put("小米", 22);
m.put("小话", 24);
m.put("小花", 21);
System.out.println(m);
}
}
输出结果:
{小黄=25, 小米=22, 小话=24, 小花=21}
package test.cn;
import java.util.*;
public class Test03 {
public static void main(String[] args) {
Map<String,Integer> m=new TreeMap<String,Integer>();
m.put("小黄", 25);
m.put("小米", 22);
m.put("小话", 24);
m.put("小花", 21);
System.out.println(m);
}
}
输出结果:
{小米=22, 小花=21, 小话=24, 小黄=25}
第一题:
package com.baidu.cn;
public class Name {
private String firstName,lastName;
public Name(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public String toString() {
return firstName + ""+ lastName;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result
+ ((firstName == null) ? 0 : firstName.hashCode());
result = prime * result
+ ((lastName == null) ? 0 : lastName.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Name other = (Name) obj;
if (firstName == null) {
if (other.firstName != null)
return false;
} else if (!firstName.equals(other.firstName))
return false;
if (lastName == null) {
if (other.lastName != null)
return false;
} else if (!lastName.equals(other.lastName))
return false;
return true;
}
}
第二题:
package com.baidu.cn;
import java.util.*;
public class Test {
public static void main(String[] args) {
ArrayList al=new ArrayList();
al.add(12);al.add(25);al.add(58);al.add(69);al.add("147");
System.out.println(al);
al.remove(1);
System.out.println(al);
al.remove("147");
System.out.println(al);
}
}
第三题:
package com.baidu.cn;
public class Test1 {
public static void main(String[] args) {
int a=100;
Integer i=new Integer(a);
System.out.println(i);
//解包
int b=new Integer(a);
System.out.println(b);
}
}
第四题:
package com.baidu.cn;
import java.util.*;
public class Test2 {
public static void main(String[] args) {
Collection<Integer> c=new HashSet<Integer>();
c.add(1);c.add(2);c.add(7);c.add(8);
for(int d:c){
System.out.println(d);
}
// System.out.println(c);
// Iterator<Integer> i=c.iterator();
// while(i.hasNext()){
// Integer n= i.next();
// System.out.println(n);
// }
}
}
第五题:
package com.baidu.cn;
import java.util.*;
public class Test3 {
public static void main(String[] args) {
Map m=new TreeMap();
m.put(1, 2);
m.put(1, 2);
m.put(5, 6);
m.put(2, 3);
m.put(0, 6);
m.put(3, 10);
m.put(78, 3);
m.put(41, 2);
System.out.println(m);
}
}
第六题:一个5位数,判断它是不是回文数。即12321是回文数,
个位与万位相同,十位与千位相同。
package com.baidu.cn;
import java.util.Scanner;
/*
* toCharArray();它可以把字符串类型转换成字符数组;
*/
public class Test4 {
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
System.out.println("请输入数字:");
int a=s.nextInt();
while(a>=10000 && a<=99999){
String str=String.valueOf(a);
char[] ch=str.toCharArray();
if(ch[0]==ch[4] && ch[1]==ch[3]){
System.out.println(str+"是回文数");
}else{
System.out.println("不是回文数");
}
break;
}
}
}
第七题:一个5位数,判断它是不是回文数。即12321是回文数,
个位与万位相同,十位与千位相同。
package com.baidu.cn;
import java.util.Scanner;
public class Test5 {
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
System.out.println("请输入数字:");
int a=s.nextInt();
while(a>=10000 && a<=99999){
String str=String.valueOf(a);
StringBuffer sb=new StringBuffer(str);
StringBuffer s2=sb.reverse();
String m=String.valueOf(s2);
if(str.equals(m)){
System.out.println("是回文数");
}else{
System.out.println("不是回文数");
}
System.out.println(s2);
break;
}
}
}
第八题:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...
求出这个数列的前20项之和。
package com.baidu.cn;
public class Test6 {
public static void main(String[] args) {
double a=2.0,b=1.0;
double sum=0;
for(int i=1;i<=20;i++){
sum=sum+a/b;
a=a+b;
b=a-b;
}
System.out.println(sum);
}
}
第九题:
package com.baidu.cn;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test7 {
public static void main(String[] args) {
String s="123abcd22xyz45";
// Pattern p=Pattern.compile("\\d");
// Matcher m=p.matcher(s);
// int sum=0;
// while(m.find()){
// String n=m.group();
// Integer i=Integer.parseInt(n);
// sum=sum+i;
// }
// System.out.println(sum);
int sum=0;
for(int i=0;i<s.length();i++){
char c=s.charAt(i);
if(Character.isDigit(c)){
sum=sum+(c-48);
}
}
System.out.println(sum);
}
}