java中数组String array{a,b,c,d,c,d,e}如何能把字段相同的分到另外的数组中
把上面的就好比{a}{b}{c,c}{d,d}{e}分成五个数组急需求高人帮忙!不是说每一个值就是一个数组我只是要把原来数组相同的字段放到单独的一个数组里面在比如{a,b...
把上面的就好比{a} {b} {c,c} {d,d}{e} 分成五个数组 急需 求高人帮忙 !
不是说每一个值就是一个数组 我只是要把原来数组相同的字段放到单独的一个数组里面 在比如{a,b,c,a,a,a,a,}那么我新生成的数组就是三个 {a,a,a,a,a}{b} {c}
当然前提是 你不知道数组里面具体是什么 只是叫判断把具有 有相同的字段就放到一个数组 没有的话就单独放一个数组 不要用
for(int i=0 ;i<array.length;i++){
if(array[i]==a){}
if(array[i]==b){}
.....
}
谢谢.....在线 等!!!帮帮忙 展开
不是说每一个值就是一个数组 我只是要把原来数组相同的字段放到单独的一个数组里面 在比如{a,b,c,a,a,a,a,}那么我新生成的数组就是三个 {a,a,a,a,a}{b} {c}
当然前提是 你不知道数组里面具体是什么 只是叫判断把具有 有相同的字段就放到一个数组 没有的话就单独放一个数组 不要用
for(int i=0 ;i<array.length;i++){
if(array[i]==a){}
if(array[i]==b){}
.....
}
谢谢.....在线 等!!!帮帮忙 展开
8个回答
展开全部
数组中提取相同的字母,可以使用string的charat方法遍历字母,放到一个string中,找到之后删除掉这个字母,接着遍历下一个,示例如下:
package test1;
import java.util.Random;
public class ArrayTest {
public static void main(String[] args) {
//1、构建一个数组
String[] array={"a","b","c","d","c","d","e"};
//2、将数组中值的遍历成一个String
String str="";
for(int i=0;i<array.length;i++){
str+=array[i];
}
System.out.println("strlength="+str);//打印出str
//3、为了能够实现需求,构建一个StringBuffer,方便使用,用法可以在jdk api找查找
StringBuffer sbu=new StringBuffer(str);//用str构建一个StringBuffer
String flag[][]=new String[sbu.length()][2];//这里只是定一个固定长的二维数组,用来存放遍历到得字母和 出现的次数,比如(a,1)表示a出现了1次,只有在每个字母都不重复下才能装满
for(int j=0;j<sbu.length();j++){
flag[j][0]=sbu.charAt(j)+"";//二维数字第一列放字母
flag[j][1]=1+"";////二维数字第二列放出现次数,至少会出现一次
for(int k=j+1;k<sbu.length();k++){
if(sbu.charAt(j)==sbu.charAt(k)){
sbu.deleteCharAt(k);//找到相同的字母,从StringBuffer中删除,这样下次就不会遍历它
flag[j][1]=Integer.parseInt(flag[j][1])+1+"";//长度加1
}
}
}
String a="{";
for(int i=0;i<flag.length;i++){
if(flag[i][1]!=null){//上面说的flag二维不一定方面,所以判断一下再取值
String s=flag[i][0];//出现的字母
int num=Integer.parseInt(flag[i][1]);//出现的次数
System.out.println("字母:"+s+"出现了:"+num+"次");
int j=0;
for( j=0;j<num;j++){
a+=s;
}
if(j+1==num){
a+="}";
}else{
a+="}{";
}
}
}
System.out.println("结果是:"+a);
}
//说明一下,可以根据你自己的需要装
}
展开全部
package test1;
import java.util.Random;
/*
运行结果如下
strlength=abcdcde
字母:a出现了:1次
字母:b出现了:1次
字母:c出现了:2次
字母:d出现了:2次
字母:e出现了:1次
结果是:{a}{b}{cc}{dd}{e}*/
public class ArrayTest {
/**
* java中数组String array{a,b,c,d,c,d,e}如何能把字段相同的分到另外的数组中
* 把上面的就好比{a} {b} {c,c} {d,d}{e} 分成五个数组 急需 求高人帮忙 !
*/
public static void main(String[] args) {
//1、构建一个数组
String[] array={"a","b","c","d","c","d","e"};
//2、将数组中值的遍历成一个String
String str="";
for(int i=0;i<array.length;i++){
str+=array[i];
}
System.out.println("strlength="+str);//打印出str
//3、为了能够实现需求,构建一个StringBuffer,方便使用,用法可以在JDK API找查找
StringBuffer sbu=new StringBuffer(str);//用str构建一个StringBuffer
String flag[][]=new String[sbu.length()][2];//这里只是定一个固定长的二维数组,用来存放遍历到得字母和 出现的次数,比如(a,1)表示a出现了1次,只有在每个字母都不重复下才能装满
for(int j=0;j<sbu.length();j++){
flag[j][0]=sbu.charAt(j)+"";//二维数字第一列放字母
flag[j][1]=1+"";////二维数字第二列放出现次数,至少会出现一次
for(int k=j+1;k<sbu.length();k++){
if(sbu.charAt(j)==sbu.charAt(k)){
sbu.deleteCharAt(k);//找到相同的字母,从StringBuffer中删除,这样下次就不会遍历它
flag[j][1]=Integer.parseInt(flag[j][1])+1+"";//长度加1
}
}
}
String a="{";
for(int i=0;i<flag.length;i++){
if(flag[i][1]!=null){//上面说的flag二维不一定方面,所以判断一下再取值
String s=flag[i][0];//出现的字母
int num=Integer.parseInt(flag[i][1]);//出现的次数
System.out.println("字母:"+s+"出现了:"+num+"次");
int j=0;
for( j=0;j<num;j++){
a+=s;
}
if(j+1==num){
a+="}";
}else{
a+="}{";
}
}
}
System.out.println("结果是:"+a);
}
//说明一下,可以根据你自己的需要装
}
import java.util.Random;
/*
运行结果如下
strlength=abcdcde
字母:a出现了:1次
字母:b出现了:1次
字母:c出现了:2次
字母:d出现了:2次
字母:e出现了:1次
结果是:{a}{b}{cc}{dd}{e}*/
public class ArrayTest {
/**
* java中数组String array{a,b,c,d,c,d,e}如何能把字段相同的分到另外的数组中
* 把上面的就好比{a} {b} {c,c} {d,d}{e} 分成五个数组 急需 求高人帮忙 !
*/
public static void main(String[] args) {
//1、构建一个数组
String[] array={"a","b","c","d","c","d","e"};
//2、将数组中值的遍历成一个String
String str="";
for(int i=0;i<array.length;i++){
str+=array[i];
}
System.out.println("strlength="+str);//打印出str
//3、为了能够实现需求,构建一个StringBuffer,方便使用,用法可以在JDK API找查找
StringBuffer sbu=new StringBuffer(str);//用str构建一个StringBuffer
String flag[][]=new String[sbu.length()][2];//这里只是定一个固定长的二维数组,用来存放遍历到得字母和 出现的次数,比如(a,1)表示a出现了1次,只有在每个字母都不重复下才能装满
for(int j=0;j<sbu.length();j++){
flag[j][0]=sbu.charAt(j)+"";//二维数字第一列放字母
flag[j][1]=1+"";////二维数字第二列放出现次数,至少会出现一次
for(int k=j+1;k<sbu.length();k++){
if(sbu.charAt(j)==sbu.charAt(k)){
sbu.deleteCharAt(k);//找到相同的字母,从StringBuffer中删除,这样下次就不会遍历它
flag[j][1]=Integer.parseInt(flag[j][1])+1+"";//长度加1
}
}
}
String a="{";
for(int i=0;i<flag.length;i++){
if(flag[i][1]!=null){//上面说的flag二维不一定方面,所以判断一下再取值
String s=flag[i][0];//出现的字母
int num=Integer.parseInt(flag[i][1]);//出现的次数
System.out.println("字母:"+s+"出现了:"+num+"次");
int j=0;
for( j=0;j<num;j++){
a+=s;
}
if(j+1==num){
a+="}";
}else{
a+="}{";
}
}
}
System.out.println("结果是:"+a);
}
//说明一下,可以根据你自己的需要装
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1. 初始化3个数组
2. 用System.arraycopy函数对其进行分析
3. 代码如下:
public class Yugi {
public static void main(String[] args){
String[] array = {"a","b","c","d","c","d","e"};
String[] other = new String[0];
String[] orig = new String[0];
String tmp = ",";
for(int i = 0; i < array.length; i++){
String a = array[i];
if(tmp.indexOf("," + a + ",") == -1){
tmp += a + ",";
String[] cloned = new String[orig.length + 1];
System.arraycopy(orig, 0, cloned, 0, orig.length);
cloned[cloned.length - 1] = a;
orig = cloned;
}else{
String[] cloned = new String[other.length + 1];
System.arraycopy(other, 0, cloned, 0, other.length);
cloned[cloned.length - 1] = a;
other = cloned;
}
}
for(String o : orig){
System.out.println(o);
}
for(String o : other){
System.out.println(o);
}
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
实现这种算法很简单.
给你一个思路,自己动手试试:
现有数组list,其值动态改变,也就是说未知,假设里面保存的是String类型的字符串;
如下:
Set<String> set = new HashSet<String>();
for(String s : list) //遍历list
set.add(s1); //将list中的值存放进set里面,去掉重复;思考:自己分析下面程序步骤,为什么要去掉重复?
for(String s1 : set){ //遍历set
System.out.println(); //每遍历一次set值,做换行操作.
for(String s2 : list) //遍历list
if(s1.equals(s2)){ //比较set和list中的值,获取到与s1值相同的s2
//s2就是获取到的值.将s2放入数组,即可得到最终所需要的结果.
System.out.print(s2 + " ");//输出s2
}
}
给你一个思路,自己动手试试:
现有数组list,其值动态改变,也就是说未知,假设里面保存的是String类型的字符串;
如下:
Set<String> set = new HashSet<String>();
for(String s : list) //遍历list
set.add(s1); //将list中的值存放进set里面,去掉重复;思考:自己分析下面程序步骤,为什么要去掉重复?
for(String s1 : set){ //遍历set
System.out.println(); //每遍历一次set值,做换行操作.
for(String s2 : list) //遍历list
if(s1.equals(s2)){ //比较set和list中的值,获取到与s1值相同的s2
//s2就是获取到的值.将s2放入数组,即可得到最终所需要的结果.
System.out.print(s2 + " ");//输出s2
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
利用set的唯一性很好解决
import java.util.Set;
import java.util.TreeSet;
public class BB {
public static void main(String[] args) {
String[] ary = {"a", "b", "c", "d", "c", "d","e"};
Set<String> set = new TreeSet<String>();
for(int i = 0; i < ary.length; i++){
set.add(ary[i]);
}
String[] newAry = set.toArray(new String[0]);
for(int i = 0; i < newAry.length; i++){
System.out.println(newAry[i]);
}
}
}
---------------testing
a
b
c
d
e
import java.util.Set;
import java.util.TreeSet;
public class BB {
public static void main(String[] args) {
String[] ary = {"a", "b", "c", "d", "c", "d","e"};
Set<String> set = new TreeSet<String>();
for(int i = 0; i < ary.length; i++){
set.add(ary[i]);
}
String[] newAry = set.toArray(new String[0]);
for(int i = 0; i < newAry.length; i++){
System.out.println(newAry[i]);
}
}
}
---------------testing
a
b
c
d
e
追问
不是的 不是说每一个值就是一个数组 我只是要把原来数组相同的字段放到单独的一个数组里面 {a,b,c,a,a,a,a,}那么我新生成的数组就是三个 {a,a,a,a,a}{b} {c}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询