Java字符串与集合练习

String.split()拆分字符串

lang包String类的split()方法

public String[] split(String regex)
public String[] split(String regex,int limit)
//limit 参数控制模式应用的次数,因此影响所得数组的长度

拆分示例:

public class SplitDemo {
    public static void main(String[] args) {
        String Str="Harry James Potter";
        String[] StrArray=Str.split("\\s");//"\\s"表示空格
        //也可以来" "来进行拆分  String[] StrArray=Str.split(" ");
        for(String str:StrArray){
            System.out.println(str);
        }
}

运行结果
Harry
James
Potter
StringTokenizer类拆分字符串

util包下的StringTokenizer类

拆分原理

StringTokenizer拆分字符串的原理是通过生成StringTokenizer对象,然后运用对象的属性来处理字符串拆分的。

public StringTokenizer(String str,String delim,boolean returnDelims)
public StringTokenizer(String str,String delim)
public StringTokenizer(String str)
//str:要解析的字符串 delim:分隔符 returnDelims:是否将分隔符作为标记返回

拆分示例:

import java.util.StringTokenizer;
public class StringTokenDemo {
    public static void main(String[] args) {
        String Str="Harry James Potter";
        StringTokenizer strToken=new StringTokenizer(Str);
        //当有拆分的子字符串时,输出这个字符串
        while(strToken.hasMoreTokens()){
            System.out.println(strToken.nextToken());
        }
    }
}

运行结果
Harry
James
Potter
提示:
“|”、“.”、“*”、“+”、“\”等不是有效的模式匹配规则表达式,是转义字符,使用split()方法时必须得加"\"才行

package step1;
import java.util.List;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class StudentDemo{
    

	//使用String.split()方法分割
	public List<String> splitPartition(String str){
		List<String> list=new ArrayList<String>();
        String[] StrArray = str.split("\\|");
		for(String s:StrArray){
            list.add(s);
        }		
		return list;
	}

	//使用StringTokenizer类进行分割
	public List<String> tokenPartition(String str){
		List<String> list=new ArrayList<String>();
        StringTokenizer strToken=new StringTokenizer(str,"\\?");
        while(strToken.hasMoreTokens()){
            list.add(strToken.nextToken());
        }
		return list;
	}

}

String.indexOf(String str)

返回指定子字符串在此字符串中第一次出现处的索引。(若返回-1则表示在该字符串中没有你要找的单词)

//声明一段字符串
String str="Can I help you";
//显示“I”在str中第一次出现的下标
System.out.println(str.indexOf("I"));
//String.indexOf(int ch)方法与此方法形同,只是参数是单个字符的ASCII码

输出:4
String.indexOf(String str, int fromIndex)

返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。

String str="Can I help you";
System.out.println(str.indexOf("I",5));
//同样String.indexOf(int ch, int fromIndex)方法与此方法也形同,只是参数是单个字符的ASCII码

输出:-1

package step2;
import java.util.Map;
import java.util.HashMap;
import java.util.StringTokenizer;
public class StudentDemo{
	//返回一个Map集合来得到单词和首次出现的下标  key为单词名称  value为单词的角标
	public Map<String, Integer> getMap(String str){
		Map<String, Integer> map = new HashMap<String, Integer>();
		//对str进行分割   再加入map集合中
		//请在此添加实现代码
        StringTokenizer tokenizer = new StringTokenizer(str);
        String word;
        while (tokenizer.hasMoreTokens()) {
            word = tokenizer.nextToken(" ,.\n");
            int index = str.indexOf(word);
            map.put(word, index);
        }
		return map;
	}

}

统计相同单词的次数

//使用map集合进行存储
String s="Day by Day";
Map map=new HashMap();
StringTokenizer tokenizer=new StringTokenizer(s);
int count;//记录次数
String word;//单个单词
while(tokenizer.hasMoreTokens()){
    word=tokenizer.nextToken(" ");
    if(map.containsKey(word)){
        //拿到之前存在map集合中该单词的次数
        count=map.get(word);
        map.put(word, count+1);
    }else{
        map.put(word, 1);
    }
}
Set> entrySet = map.entrySet();
for (Entry entry : entrySet) {
    System.out.println(entry.getKey()+"-"+entry.getValue());
}

输出:
by-1
Day-2
如何进行排序

使用Collections包装类。它包含有各种有关集合操作的静态多态方法。

//可根据指定比较器产生的顺序对指定列表进行排序。
Collections.sort(List list, Comparator c)

示例如下:

//以上实例中的map集合为例   将map集合的每一项添加进list集合中
List> infos = new ArrayList>(map.entrySet());
Collections.sort(infos, new Comparator>() {
    public int compare(Map.Entry o1,
        Map.Entry o2) {
        //前者-后者  升序         后者-前者  降序
        return (o2.getValue() - o1.getValue());
    }
});

输出:
Day-2
by-1

package step2;
import java.util.Map;
import java.util.HashMap;
import java.util.StringTokenizer;
public class StudentDemo{
	//返回一个Map集合来得到单词和首次出现的下标  key为单词名称  value为单词的角标
	public Map<String, Integer> getMap(String str){
		Map<String, Integer> map = new HashMap<String, Integer>();
		//对str进行分割   再加入map集合中
		//请在此添加实现代码
        StringTokenizer tokenizer = new StringTokenizer(str);
        String word;
        while (tokenizer.hasMoreTokens()) {
            word = tokenizer.nextToken(" ,.\n");
            int index = str.indexOf(word);
            map.put(word, index);
        }
		return map;
	}

}

你可能感兴趣的:(java学习,java,jvm,servlet)