查找list中的重复数据,并得到不重复数据索引位置

public static void main(String[] args) {
    List<String> strLs = new ArrayList<String>();
    strLs.add("香蕉");
    strLs.add("苹果");
    strLs.add("苹果");
    strLs.add("橘子");
    strLs.add("橘子");
    strLs.add("橘子");
    strLs.add("哈密瓜");
    strLs.add("西瓜");

    same(strLs);
}

public static List<Integer> same(List<String> list) {
    Map<String, String> map = new HashMap<String, String>();
    for (int i = 0; i < list.size(); i++) {
        String key = list.get(i);
        String old = map.get(key);
        if (old != null) {
            map.put(key, old + "," + (i + 1));
        } else {
            map.put(key, "" + (i + 1));
        }
    }
    Iterator<String> it = map.keySet().iterator();
    List<Integer> list2 = new ArrayList<>();
    StringBuffer buffer = new StringBuffer();
    while (it.hasNext()) {
        String key = it.next();
        String value = map.get(key);
        if (value.indexOf(",") == -1) {
            System.out.println(key + "不重复,行: " + value);
            buffer.append(value).append(",");
        }
    }
    String string = buffer.deleteCharAt(buffer.length()-1).toString();

    String[] split = string.split(",");
    for (String string2 : split) {
        list2.add(Integer.parseInt(string2.trim()));
    }
    Collections.sort(list2);
    return list2;
}

原文地址:https://www.cnblogs.com/sunBinary/p/12001850.html

时间: 2024-10-30 14:53:46

查找list中的重复数据,并得到不重复数据索引位置的相关文章

查找数据库中重复数据T-SQL

查找数据库中重复数据T-SQL ========第一篇========= 在一张表中某个字段下面有重复记录,有很多方法,但是有一个方法,是比较高效的,如下语句: select data_guid from adam_entity_datas a where a.rowid > (select min(b.rowid) from adam_entity_datas b where b.data_guid = a.data_guid) 如果表中有大量数据,但是重复数据比较少,那么可以用下面的语句提高

解析、查找数组中重复出现的元素(Java)

 解析.查找数组中重复出现的元素,Java实现. <数据结构与算法分析:解析.查找数组中重复出现的元素> 问题描述:一个结构化数据,假设事先按照某种顺序排好序(比如升序)的一个数组中,无规则.重复出现若干次某个相同元素,形如有序数组data: data = {  "A", "A", "B", "C", "C", "D", "D" , "D&q

定时从一个数据库表中的数据存储到另外一个数据库中的表,而且怎么处理重复的数据?

原文:http://www.iteye.com/problems/77856 定时从一个数据库表中的数据存储到另外一个数据库中的表,而且怎么处理重复的数据? 表结构肯定是不能破坏,但是临时表如果是自己的数据库还行,问题是这个Oracle数据库是客户的数据库呢,你不能在他的数据库做任何多余的操作吧?还有别的更好的方法吗? 这个真的是比较困难. 首先,你要从客户机oracle取数据,因为这1分钟间隔之内不知道用户机新增加了哪些数据(大部分情况下是用户使用别的系统插入数据,而你又没有这个系统的程序接口

JS数组常用函数以及查找数组中是否有重复元素的三种常用方法

阅读目录: DS01:常用的查找数组中是否有重复元素的三种方法 DS02:常用的JS函数集锦 DS01.常用的查找数组中是否有重复元素的三种方法 1. 1 var ary = new Array("111","22","33","111"); 2 var s = ary.join(",")+","; 3 for(var i=0;i<ary.length;i++) { 4 if(s.

查找字符串中第一个不重复的字符

import java.util.*; public class GetFirstNoRepeatChar{ static char getChar(String s){ int len=s.length(); int len_tim=128; char c='F'; int []tim=new int[len_tim]; //以字符做下标,存储该字符出现次数 for(int i=0;i<len;i++){ c=s.charAt(i); tim[c]+=1; } //遍历,取得 for(int

C#查找列表中所有重复出现元素代码

C#查找列表中所有重复出现元素代码 public T[] GetDuplicates(T inputValue) {   List<T> duplicates = new List<T>( );   for (int i = 0; i < this.Count; i++)   {     if (this[i].Equals(inputValue))     {       duplicates.Add(this[i]);     }   }//codego.net   re

SqlServer查找表中多余的重复记录

1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select * from peoplewhere peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 2.删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录delete from peoplewhere peopleId in (select peo

查找表中多余的重复记录(多个字段)

3.查找表中多余的重复记录(多个字段) select * from vitae awhere (a.peopleId,a.seq) in  (select peopleId,seq from vitae group by peopleId,seq  having count(*) > 1) 注意这里 in可以有多个字段

在C#应用程序中,利用表值参数过滤重复,批量向数据库导入数据,并且返回重复数据

在很多情况下,应用程序都需要实现excel数据导入功能,数据如果只有几十条,或上百条,甚至上千条,速度还好. 但是不仅如此,如果客户提供给你的excel本身存在着重复数据,或是excel中的某些数据已经在数据库存在,那这时,在向数据库插入数据前你还得判重,如果不存在才进行导入 通常,我们第一步就会通过上传的方式把excel中的数据读到内存,然后通过循环的方式得出一条一条数据,接着对于每条数据用关键字段去往数据库中进行一次查重,若存在则不做事情,若 不存在则向数据库中插入一条数据.这样一来,我们每

mysql insert插入时实现如果数据表中主键重复则更新,没有重复则插入的四种方法

[CSDN下载] Powerdesigner 设计主键code不能重复等问题 [CSDN博客] Oracle中用一个序列给两个表创建主键自增功能的后果 [CSDN博客] MySQL自增主键删除后重复问题 [CSDN博客] mysql 主从复制 双主从复制原理 防止主键重复问题(必看) [CSDN博客] replace into导致mysql自增列导致主键重复问题分析 [CSDN博客] 一个循环更新某库所有表所有非主键列的值方法(sql 2005 & mysql) [CSDN博客] mysql i