gpt4 book ai didi

java - 将长列表转换为字符串集

转载 作者:行者123 更新时间:2023-12-01 19:49:06 26 4
gpt4 key购买 nike

假设,无论出于何种原因,我必须转换 List<Long>Set<String> 。为了不丢失列表中的任何项目,我必须创建一个唯一的 String从元素中。目前我正在这样做:

public class StringUtils {
private static final String FORMAT = "<%d>:%s";
private static long counter = 0;

public static synchronized String valueOf(long value) {
return String.format(FORMAT, counter++, String.valueOf(value));
}

public static long getLong(String input) {
int start = input.indexOf(":") + 1;
int end = input.length();

return Long.parseLong(input.substring(start, end));
}
}

for(long item : list) {
set.add(StringUtils.valueOf(item));
}

我认为这不是一个非常优雅的解决方案,但至少它有效。你能想出更好/更快的方法来做到这一点吗?顺便提一句。我仅限于 Java 7。

最佳答案

要访问 List 索引,请勿使用增强型 for,而应使用经典 for:

private static final String FORMAT = "<%d>:%s";

// ...

for(int i=0; i< list.size(); i++) {
long item = list.get(i);
set.add(String.format(FORMAT, i, String.valueOf(item)));
}

请注意,不丢失集合中重复元素的方法是可以改进的:包含两个不同信息的字符串没有意义。
您可以使用不覆盖 equals()/hashCode() 的自定义类,这样您就不会丢失任何元素:

Set<MyValue> set = ...;

for(long item : list) {
set.add(new MyValue(item)));
}

其中 MyValue 定义为:

public class MyValue{

private long value;

public MyValue(long value){
this.value = value;
}

public long getValue(){
return value;
}
}

关于java - 将长列表转换为字符串集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52093811/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com