我正在尝试创建一种方法来比较两个arraylist buttonresourceIds& buttonresourceIds2。我想比较它们以确定它们是否共享按钮元素。然后返回"数字"他们分享的元素。
OBJ
它给了我结果,但循环不断重复。我错过了什么吗?
答案 0 :(得分:2)
你不需要两个循环来做到这一点,一个循环足以解决它
ArrayList<String>> buttonresourceIds = new ArrayList<String>>();
ArrayList<String>> buttonresourceIds2 = new ArrayList<String>>();
int common=0;
for(int j=0;j<buttonresourceIds2.size();j++){
if(buttonresourceIds.contains(buttonresourceIds2.get(j))){
System.out.println("Exist : "+buttonresourceIds2.get(j));
common++;
}else{
System.out.println("Not Exist : "+buttonresourceIds2.get(j));
}
}
return common;
答案 1 :(得分:1)
见下面的代码:
{{#models}}
{{#model}}
//
// {{classname}}.swift
//
// Generated by swagger-codegen
// https://github.com/swagger-api/swagger-codegen
//
import Foundation
{{#description}}
/** {{description}} */{{/description}}
{{#isArrayModel}}
public typealias {{classname}} = [{{arrayModelType}}]
{{/isArrayModel}}
{{^isArrayModel}}
{{#isEnum}}
public enum {{classname}}: {{dataType}} {
{{#allowableValues}}{{#enumVars}} case {{name}} = "{{{value}}}"
{{/enumVars}}{{/allowableValues}}
func encodeToJSON() -> Any { return self.rawValue }
}
{{/isEnum}}
{{^isEnum}}
{{#vars.isEmpty}}
public typealias {{classname}} = {{dataType}}
{{/vars.isEmpty}}
{{^vars.isEmpty}}
open class {{classname}}: NSObject, NSCoding {{#parent}}{{{parent}}}{{/parent}}{{^parent}},JSONEncodable{{/parent}} {
{{#vars}}
{{#isEnum}}
public enum {{enumName}}: {{^isContainer}}{{datatype}}{{/isContainer}}{{#isContainer}}String{{/isContainer}} { {{#allowableValues}}{{#enumVars}}
case {{name}} = {{#isContainer}}"{{/isContainer}}{{#isString}}"{{/isString}}{{{value}}}{{#isString}}"{{/isString}}{{#isContainer}}"{{/isContainer}}{{/enumVars}}{{/allowableValues}}
}
{{/isEnum}}
{{/vars}}
{{#vars}}
{{#isEnum}}
{{#description}}/** {{description}} */
{{/description}}public var {{name}}: {{{datatypeWithEnum}}}{{^unwrapRequired}}?{{/unwrapRequired}}{{#unwrapRequired}}{{^required}}?{{/required}}{{/unwrapRequired}}{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}}
{{/isEnum}}
{{^isEnum}}
{{#description}}/** {{description}} */
{{/description}}public var {{name}}: {{{datatype}}}{{^unwrapRequired}}?{{/unwrapRequired}}{{#unwrapRequired}}{{^required}}?{{/required}}{{/unwrapRequired}}{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}}
{{/isEnum}}
{{/vars}}
{{#additionalPropertiesType}}
public var additionalProperties: [AnyHashable:{{{additionalPropertiesType}}}] = [:]
{{/additionalPropertiesType}}
{{^unwrapRequired}}
{{^parent}}public override init() {}{{/parent}}{{/unwrapRequired}}
{{#unwrapRequired}}
public init({{#allVars}}{{^-first}}, {{/-first}}{{name}}: {{#isEnum}}{{datatypeWithEnum}}{{/isEnum}}{{^isEnum}}{{datatype}}{{/isEnum}}{{^required}}?=nil{{/required}}{{/allVars}}) {
{{#vars}}
self.{{name}} = {{name}}
{{/vars}}
}{{/unwrapRequired}}
public required init?(coder aDecoder: NSCoder){
{{#vars}}
{{#isEnum}}
self.{{name}} = aDecoder.decodeObject(forKey: "{{name}}") as? {{{datatypeWithEnum}}}
{{/isEnum}}
{{^isEnum}}
self.{{name}} = aDecoder.decodeObject(forKey: "{{name}}") as? {{{datatype}}}
{{/isEnum}}
{{/vars}}
}
{{#additionalPropertiesType}}
public subscript(key: AnyHashable) -> {{{additionalPropertiesType}}}? {
get {
if let value = additionalProperties[key] {
return value
}
return nil
}
set {
additionalProperties[key] = newValue
}
}
{{/additionalPropertiesType}}
// MARK: JSONEncodable
{{#parent}}override {{/parent}}open func encodeToJSON() -> Any {
var nillableDictionary = {{#parent}}super.encodeToJSON() as? [String:Any?] ?? {{/parent}}[String:Any?](){{#vars}}{{#isNotContainer}}{{#isPrimitiveType}}{{^isEnum}}{{#isInteger}}
nillableDictionary["{{baseName}}"] = self.{{name}}{{^unwrapRequired}}?{{/unwrapRequired}}{{#unwrapRequired}}{{^required}}?{{/required}}{{/unwrapRequired}}.encodeToJSON(){{/isInteger}}{{#isLong}}
nillableDictionary["{{baseName}}"] = self.{{name}}{{^unwrapRequired}}?{{/unwrapRequired}}{{#unwrapRequired}}{{^required}}?{{/required}}{{/unwrapRequired}}.encodeToJSON(){{/isLong}}{{^isLong}}{{^isInteger}}
nillableDictionary["{{baseName}}"] = self.{{name}}{{/isInteger}}{{/isLong}}{{/isEnum}}{{/isPrimitiveType}}{{#isEnum}}
nillableDictionary["{{baseName}}"] = self.{{name}}{{^unwrapRequired}}?{{/unwrapRequired}}{{#unwrapRequired}}{{^required}}?{{/required}}{{/unwrapRequired}}.rawValue{{/isEnum}}{{^isPrimitiveType}}
nillableDictionary["{{baseName}}"] = self.{{name}}{{^unwrapRequired}}?{{/unwrapRequired}}{{#unwrapRequired}}{{^required}}?{{/required}}{{/unwrapRequired}}.encodeToJSON(){{/isPrimitiveType}}{{/isNotContainer}}{{#isContainer}}{{^isEnum}}
nillableDictionary["{{baseName}}"] = self.{{name}}{{^unwrapRequired}}?{{/unwrapRequired}}{{#unwrapRequired}}{{^required}}?{{/required}}{{/unwrapRequired}}.encodeToJSON(){{/isEnum}}{{#isEnum}}{{#isListContainer}}
nillableDictionary["{{baseName}}"] = self.{{name}}{{^unwrapRequired}}?{{/unwrapRequired}}{{#unwrapRequired}}{{^required}}?{{/required}}{{/unwrapRequired}}.map({$0.rawValue}).encodeToJSON(){{/isListContainer}}{{#isMapContainer}}//TODO: handle enum map scenario{{/isMapContainer}}{{/isEnum}}{{/isContainer}}{{/vars}}
{{#additionalPropertiesType}}
for (key, value) in additionalProperties {
if let key = key as? String {
nillableDictionary[key] = value
}
}
{{/additionalPropertiesType}}
let dictionary: [String:Any] = APIHelper.rejectNil(nillableDictionary) ?? [:]
return dictionary
}
public func encode(with aCoder: NSCoder) {
{{#vars}}
aCoder.encode({{name}}, forKey: "{{name}}")
{{/vars}}
}
}
{{/vars.isEmpty}}
{{/isEnum}}
{{/isArrayModel}}
{{/model}}
{{/models}}
在上面的代码中,只需要一个循环。
答案 2 :(得分:1)
首先,代码中存在一些错误:
get()
正如其他答案所说的那样:一个循环很有用但是调用foreach
2次的费用大于1,所以你可以在那里使用for (String button : buttonresourceIds2) {
if (buttonresourceIds.contains(button)) {
System.out.println("Exist : " + button);
elementInCommon++;
} else {
System.out.println("Not Exist : " + button);
}
}
功能:
buttonresourceIds.retainAll(buttonresourceIds2);
int elementInCommom = buttonresourceIds.size();
之后你想要计算共同的元素,所以你要添加一个变量,如果包含
,它会自行递增更简单的方法<2> 将是:
public void generate(View view) {
Random rand = new Random();
int number = rand.nextInt(69)+1;
TextView myText = (TextView)findViewById(R.id.textView);
String myString = String.valueOf(number);
myText.setText(myString);
}
答案 3 :(得分:-1)
public static void main(String[] args) {
ArrayList<String> buttonresourceIds = new ArrayList<String>();
ArrayList<String> buttonresourceIds2 = new ArrayList<String>();
buttonresourceIds.add("1");
buttonresourceIds.add("2");
buttonresourceIds.add("3");
buttonresourceIds2.add("1");
buttonresourceIds2.add("2");
buttonresourceIds2.add("4");
for(int i=0;i<buttonresourceIds.size();i++){
for(int j=i;j<buttonresourceIds2.size();j++){
if(buttonresourceIds.contains(buttonresourceIds2.get(j))){
System.out.println("Exist : "+buttonresourceIds2.get(j));
}else{
System.out.println("Not Exist : "+buttonresourceIds2.get(j));
}
break;
}
}
}