Java怎么找一个ArrayList中最长的连续相同元素

Java怎么找一个ArrayList中最长的连续相同元素,第1张

import javautilArrays;

import javautilList;

import javautilregexMatcher;

import javautilregexPattern;

public class Joey

{

private static int getSeat(List<String> list)

{

int max = IntegerMIN_VALUE;

int index = 0;

for(int i = 0; i < listsize(); i++)

{

String a = listget(i);

int num = 1;

int j = i + 1;

while(j < listsize() && aequals(listget(j)))

{

num++;

j++;

}

if(max < num)

{

index = i;

max = num;

}

i += num - 1;

}

return index;

}

public static void main(String[] args)

{

//List<String> list = ArraysasList("a", "a", "a", "b", "b", "b", "a", "a", "a", "a", "b", "b", "c");

//List<String> list = ArraysasList("a", "a", "a", "b", "b", "a");

List<String> list = ArraysasList("a", "b", "b", "a");

int i = getSeat(list);

Systemoutprintln(i);

}

}

import javautilArrays;

import javautilIterator;

import javautilList;

import javautilTreeSet;

public class MyCount {

public static void main(String[] args) {

Integer[] arr={1,2,2,2,2,4,4,4,6,6,6,6,12,12,13,13,13,16,17,19,19,19,36,39};

List<Integer> numList=ArraysasList(arr);

TreeSet<Integer> ts=new TreeSet<>(numList);

Iterator<Integer> it=tsiterator();

for (int i=0;ithasNext();) {

int index=++i,num=itnext(),count=0;

Systemoutprintln("工序"+index+":"+num);

for(int j=0;j<numListsize();j++) {

if(numListget(j)==num) {

Systemoutprintln("\t次数:"+(++count)+":"+num);

}

}

}

}

}

把List看成数组,用下标形式龋 例如:取第一个元素:List list =new List();String string=list[0]; 函数解析:String类是不可变的,对String类的任何改变,都是返回一个新的String类对象。 String 对象是 SystemChar 对象的有序集

List<Object> list = new ArrayList<Object>();

Object oldObj =

Object newObj =

int index = listindexOf(oldObj);

if(index!=-1){

listadd(index,newObj);

listremove(index+1);

}

如果以上 *** 作有问题,你的类可能需要实现 Comparable 接口

我可以帮助你,你先设置我最佳答案后,我百度Hii教你。

java将list相同次数输出到另外一个list,可以使用map作为中间转换的结合,将重复的次数赋值给value,而key值为list原来的内容,实例如下:import javautilArrayList;import javautilHashMap;import javautilList;import javautilMap;public class Test {public static void main(String[] args) {List list = new ArrayList();//新建一个集合listadd(1);listadd(2);listadd(2);listadd(5);listadd(4);listadd(4);listadd(3);listadd(2);Map map = new HashMap();//新建一个map集合,用来保存重复的次数for(Integer obj: list){if(mapcontainsKey(obj)){//判断是否已经有该数值,如有,则将次数加1mapput(obj, mapget(obj)intValue() + 1);}else{mapput(obj, 1);}}ArrayList newList = new ArrayList(mapvalues());//新建另外一个listSystemoutprintln(newListtoString());}}

遍历常用的方法是for循环,增强for循环,还有Iterator

比对的话用String,equals() 方法就好了,当然取出来对比简单,但是算法有点恶劣。 元素比较少的话还好。

List<String> list=new ArrayList<String>();

//第一种

for(int i=1;i<listsize();i++){

}

//第二种

for(String o: list){

}

//第三种

Iterator<String> iter=listiterator();

while(iterhasNext()){

}

大概就这结构吧。

这是搞哪样?

不但大费周章,而且容易错……

先equalSets吧,

private static boolean equalSets(LinkedList list1, LinkedList list2){

return subset(list1,list2)&&subset(list2,list1);// 集合的内容,两集合互为子集就是相等了

}

然后difference,

private static LinkedList difference(LinkedList list1, LinkedList list2){

while(isNull(list2)){

if(isMember(first(list2),list1))

list1=deleteAll(first(list2),list1);// 将重复元素去除

else

list1=add(first(list2),list1);// 非重复元素存入list1

list2=rest(list2);

}

return list1;

}

最后intersect,

private static LinkedList intersect(LinkedList list1, LinkedList list2){

list2=difference(list1,list2);// 得到两集合不同的元素

while(isNull(list2)){

if(isMember(first(list2),list1))

;// 元素重复,什么也不干

else

list1=deleteAll(first(list2),list1);// 非重复元素删除

list2=rest(list2);

}

return list1;

}

以上就是关于Java怎么找一个ArrayList中最长的连续相同元素全部的内容,包括:Java怎么找一个ArrayList中最长的连续相同元素、Java中如何对list集合中相同的元素分类、如何将 List<List<String>gt;中包含相同元素的List进行搜索重组等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9317981.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存